home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / muds / pennmush.000 / pennmush-1.50-p8-linux.tar / pennmush / game / txt / help.txt < prev    next >
Text File  |  1993-04-15  |  193KB  |  4,664 lines

  1. & help
  2.   This is the MUSH online help facility.
  3.  
  4.   Notes on help descriptions: 
  5.     [text] - Text enclosed in []'s is optional.  The []'s are never typed
  6.                  in as part of the command.
  7.       <parameter> - Information parameter for a command.  The <>'s are
  8.                       never typed in as part of the command.
  9.  
  10.   Syntax of help command:
  11.     help [<command>]
  12.  
  13.   To get a list of MUSH topics:
  14.      help topics
  15.  
  16.   To get a list of MUSH Commands:
  17.      help commands
  18.  
  19.   If there are any errors in the help text, please notify a wizard
  20.   in the game, or send mail to lwl@eniac.seas.upenn.edu
  21.  
  22.   All commands listed in this file might not apply to all mushes running
  23.   this code.  This is because some of the commands/effects can be enabled or
  24.   disabled by the site admin of your MUSH.  If a command is not available
  25.   AND it is documented, ask your site admin why it isn't enabled.
  26.   You may use the "@config" command to see the MUSH configuration.
  27.  
  28. & COMMANDS
  29.   Help is available for the following MUSH Commands:
  30.  
  31.   brief          DOING          drop           examine        enter          
  32.   events         get            give           goto           kill           
  33.   leave          LOGOUT         look           move           news           
  34.   page           pose           QUIT           read           rpage         
  35.   RWHO           say            score          slay           take          
  36.   think          use            whisper        WHO           
  37.   "              :              ;              &              +
  38.  
  39.   In addition to these, there are '@' commands.  @-commands usually are
  40.   commands which can modify and affect the database in substantial ways.
  41.   There are several types of '@' commands. The following help entries
  42.   list available '@' commands:
  43.  
  44.   @-ATTRIBUTES   @-BUILDING     @-GENERAL      @-WIZARD
  45.  
  46. & @-ATTRIBUTES
  47.   '@' commands which are attribute-related set game-defined attributes.
  48.   
  49.   These are:
  50.   @aahear        @aclone        @aconnect      @adeath        @adescribe     
  51.   @adisconnect   @aefail        @aenter        @afailure      @ahear         
  52.   @aleave        @amhear        @amove         @apayment      @asuccess      
  53.   @atport        @ause          @away          @charges       @cost          
  54.   @death         @describe      @drop          @ealias        @efail         
  55.   @enter         @failure       @filter        @haven         @idescribe     
  56.   @idle          @infilter      @inprefix      @lalias        @leave         
  57.   @listen        @move          @odeath        @odescribe     @odrop         
  58.   @oefail        @oenter        @ofailure      @oleave        @omove         
  59.   @opayment      @osuccess      @otport        @ouse          @oxenter       
  60.   @oxleave       @oxtport       @payment       @prefix        @runout        
  61.   @sex           @startup       @success       @tport         @use
  62.   
  63. & @-BUILDING
  64.   These '@' commands are building related (they modify the database):
  65.  
  66.   @atrlock       @atrchown      @chown         @chzone        @clone         
  67.   @cpattr        @create        @destroy       @dig           @elock         
  68.   @eunlock       @link          @lock          @name          @nuke          
  69.   @open          @parent        @set           @ulock         @unlink        
  70.   @unlock        @uunlock       @wipe
  71.   
  72. & @-GENERAL
  73.   These '@' commands are general utilities and programming commands:
  74.  
  75.   @@             @alias        @channel       @chat          @config        
  76.   @decompile     @doing         @dolist        @drain         @edit          
  77.   @emit          @entrances     @find          @force         @function      
  78.   @gedit     @grep        @halt          @lemit         @listmotd      
  79.   @mail          @map           @notify        @oemit         @password      
  80.   @pemit         @ps            @remit         @rwall         @rwallemit     
  81.   @rwallpose     @scan        @search        @select        @stats         
  82.   @sweep         @switch        @teleport      @trigger       @verb          
  83.   @version       @wait          @whereis       @zemit
  84.  
  85. & @-WIZARD
  86.   These '@' commands are only usable by wizards or priviledged players:
  87.  
  88.   @allhalt       @allquota      @boot          @chownall      @chzoneall
  89.   @comment       @dbck          @disable       @dump          @enable
  90.   @fixdb         @hide          @kick          @motd          @newpassword   
  91.   @pcreate       @poll          @poor          @power         @purge         
  92.   @quota         @readcache     @rejectmotd    @shutdown      @squota        
  93.   @toad          @uptime        @wall          @wallemit      @wallpose      
  94.   @wizemit       @wizmotd       @wizpose       @wizwall
  95.  
  96. & topics
  97.   Help available on the following Topics:
  98.  
  99.   ATTRIB-OWNERSHIP         ATTRIBUTES               BEING KILLED
  100.   BOGUS COMMANDS           BOOLEAN VALUES           CHAT
  101.   CONTROL                  DROP-TO                  ENACTOR                  
  102.   EVALUATION           EXITS                    FAILURE            
  103.   FLAGS                    FUNCTIONS            GENDER            
  104.   HERE                     HOMES                    LINKING                  
  105.   LISTENING                LISTS                    LOOPING                  
  106.   MASTER ROOM              NON-STANDARD ATTRIBUTES  OBJECT PARENTS
  107.   PARENT ROOMS             PUPPETS                  ROBBERY                  
  108.   SACRIFICING              SEMAPHORES               SPOOFING                 
  109.   STACK                    SUBSTITUTIONS            SUCCESS                  
  110.   SWITCHES                 TYPES OF OBJECTS         VERBS                 
  111.   ZONE MASTERS             ZONE OBJECTS
  112.  
  113. & SEMAPHORES
  114.   SEMAPHORES
  115.   
  116.   Semaphores may be used for synchronizing complex objects or for enforcing
  117.   mutual exclusion. Any object, of any type, that you control or that is 
  118.   LINK_OK can be used as a semaphore.
  119.   
  120.   The semaphore state of an object is shown by the SEMAPHORE attribute,
  121.   which cannot be manually changed by mortals. A positive number indicates
  122.   that there are that many commands awaiting "notifies" on the semaphore
  123.   object; a negative number indicates that many waits on that semaphore
  124.   will not block.
  125.   
  126.   The @wait command is used to queue commands on a semaphore, delaying
  127.   them until the semaphore is notified with the "@notify" command.
  128.   The @drain command and "@notify/all" clear the semaphore on the object,
  129.   discarding and executing immediately all pending commands, respectively.
  130.   The object which is doing the @wait executes the commands, NOT the 
  131.   semaphore.
  132.   
  133.   (See 'help semaphores2' for more)
  134.   
  135. & SEMAPHORES2
  136.   You can also specify a timeout value for a semaphore wait with
  137.   @wait <object>/<timeout> = <command>  (instead of the normal form
  138.   of the semaphore wait command: @wait <object> = <command> )
  139.   If the time period expires before the semaphore is notified, then
  140.   the command is executed and the semaphore count decremented, just
  141.   as if the command had been run because the semaphore was notified.
  142.   
  143.   Examples:
  144.   
  145.   > @wait semaphore=:tests.
  146.   > @notify semaphore
  147.   Wizard tests.
  148.   
  149.   > @wait timer/30=:waits 30 seconds.
  150.   [ 30 seconds passes. ]
  151.   Wizard waits 30 seconds.
  152.   
  153.   See also the help for: @wait, @drain, @notify
  154. & SWITCHES
  155.   SWITCHES
  156.  
  157.   Commands can have "switches" which modify the behavior of the
  158.   command. Switches are attached after the end of a command.
  159.   Most switches have a single-command short form; command switches
  160.   are provided in this code to increase compatiblity with TinyMUSH 2.0,
  161.   as well as to reduce the number of commadns that players need to
  162.   remember.
  163.  
  164.   A slash ('/') is used to separate the command and switch. For
  165.   example, the switch-equivalent of the "@nuke" command is
  166.   "@destroy/override".  In some places, the word which is usually the
  167.   command argument can be used as a switch - i.e. "@sweep/connected"
  168.   instead of "@sweep connected".  You do not have to type the full
  169.   name of the switch.
  170.  
  171. & CONTROL
  172.   CONTROL
  173.   
  174.   <Object> controls <thing> if:
  175.   
  176.   1. <Object> is a wizard.
  177.   
  178.   2. <Object> owns <thing>, and <Object> is a player.
  179.  
  180.   3. <Object> and <thing> have the same owner, and <thing> is neither
  181.      a player nor INHERIT.
  182.  
  183.   3. <Object> has the same owner as <thing>, and <object> is INHERIT.  
  184.  
  185.   4. <Object> has the same owner as <thing>, and the owner is INHERIT.
  186.   
  187.   5. <Object> is in the same zone as <thing>, and <object> passes the
  188.      Enter lock of the zone object. Also, <thing> cannot be INHERIT,
  189.      nor can it be a player.
  190.  
  191. & ZONE
  192.   Flag: ZONE   (players only)
  193.   
  194.   The ZONE flag is used to designate a player as a Zone Master. Objects
  195.   owned by a Zone Master are controlled by anyone who passes the player's
  196.   enter lock. This allows zoning based on ownership rather than on the
  197.   zone field, and is more secure, although it does not allow for the
  198.   "local master room" ability of "standard" zones.
  199.   
  200.   See the topic "ZONE MASTERS" for more information.
  201.   
  202. & ZONE OBJECTS
  203.   ZONE OBJECTS
  204.   
  205.   Zones are areas of the MUSH which may be controlled by many people.
  206.   Essentially, they allow group ownership of objects. There are two
  207.   basic types of zones. One is maintained by things and rooms, and
  208.   are the "standard" zones. These are described below. The other type
  209.   is maintained by players. Information on this type of zone is found
  210.   under the topic ZONE MASTERS.
  211.   
  212.   The default zone is NOTHING. Any building done by a player defaults 
  213.   to belonging to the same zone that the player belongs to.
  214.   Every zone is defined by a Zone Master Object (ZMO). The ZMO is an
  215.   ordinary MUSH object owned by some player. A wizard may change the
  216.   zone of an object or player to a ZMO.
  217.   
  218.   If the ZMO is a room, it is called a "Parent room." Most of the
  219.   statements about ZMOs also apply to parent rooms; for details,
  220.   see the help topic PARENT ROOMS.
  221.   
  222.   See "help ZONES2" for more.
  223.   
  224. & ZONES2
  225.   
  226.   Anyone who can pass the Enter lock of the ZMO has control over all
  227.   objects in that zone. This, in essence, gives that player wizard
  228.   powers within that zone. For this reason, one must be extremely
  229.   careful with the enter locks of ZMOs!
  230.   
  231.   Also, $commands on a ZMO are treated as global within that zone.
  232.   The game attempts to match $commands for the ZMO of the player's
  233.   location, as well as $commands for the player's own zone.
  234.   For some suggestions on how to use zones, see "help ZONES3".
  235.   
  236. & ZONES3
  237.   Some suggested uses of zones:
  238.   
  239.     1. If you are working on a building project with several people, it
  240.        may be useful to create a zone object and @elock it to all of you,
  241.        and ask a wizard to @chzone the players involved to the zone object.
  242.        That way, all of the players working on the project will be able to
  243.        modify the building.
  244.   
  245.     2. On a similar thread, if several players are working on a project
  246.        involving only a few objects, it may be simpler to create a zone
  247.        object and @chzone those few objects to the ZMO instead of resetting
  248.        the zones of the players. Note that a player does not have to belong
  249.        to a zone in order to change objects in that zone; all is merely
  250.        required to pass the ZMO's enter lock.
  251.   
  252.     See "help ZONES4" for more.
  253.   
  254. & ZONES4
  255.   More possible uses for zones:
  256.   
  257.     3. If local wizards are desired, a zone object may be created and enter
  258.        locked to the local wizard. Players building within that zone should
  259.        be @chzone'd to that ZMO. The local wizard will then be able to
  260.        control anything within that domain.
  261.   
  262.     4. If you want restricted global commands defined over only a small area,
  263.        you can define that area to be part of a zone, and place the desired
  264.        $commands upon the ZMO.
  265.   
  266. & PARENT ROOMS
  267.   
  268.   Parent rooms are a subset of zones. If a room is used as as zone oject,
  269.   it is a parent room (PR). PRs are like local "master" rooms. Exits in
  270.   the PR are global to that zone, and $commands on objects in the PR are
  271.   global to that zone. Parent rooms are only defined if globals are used.
  272.   Parent rooms should only be used for very large zones which have a lot
  273.   of global exits. Otherwise, a ZMO thing should be used, because command
  274.   evaluation on a parent room is slower than command evaluation on a ZMO.
  275.   Large numbers of parent rooms may slow down the game significantly.
  276.   
  277.   See "help ZONES" and "help EVALUATION" for more information.
  278.   
  279. & ZONE MASTERS
  280.   ZONE MASTERS
  281.  
  282.   Zone Masters are player objects which are used to mediate zone control.
  283.   A Zone Master is an object of type PLAYER, which has the ZONE flag set.
  284.   They are created like ordinary players, and can connect, etc.  The only
  285.   difference is that objects owned by Zone Masters are controlled by
  286.   anything that passes the enter lock of the Zone Master.
  287.   
  288.   Anyone who passes the enter lock of the Zone Master can @chown objects
  289.   to it. This, however, does not refund the original creator's money or
  290.   quota, as does normal @chown. Using a Zone Master instead of a ZMO 
  291.   enables a higher degree of security within the zone, and allows INHERIT
  292.   objects to be placed in the zone, since all objects within the zone have
  293.   the same owner. $commands are not, however, inherited off the Zone Master.
  294.   
  295.   Zone Masters allow a secondary type of zoning, similar but separate from
  296.   the "normal" zone format. The Zone field of the object is not used at all.
  297.   
  298. & MASTER ROOM
  299.   MASTER ROOM
  300.   
  301.   The Master Room enables global commands and exits. Exits in the Master
  302.   Room may be used from any location on the MUSH. All objects left in the
  303.   Master Room are checked for user-defined $commands. Those $commands are
  304.   considered global. Normally, only wizards will have access to the Master
  305.   Room. See "help EVALUATION" for details on global commands.
  306.   
  307. & EVALUATION
  308.   EVALUATION ORDER
  309.   Commands are mated in the following order:
  310.   Special game commands: WHO, QUIT, etc.
  311.   "home" command
  312.   Single-token commands: ", :, ;, +
  313.   Exits in the room
  314.   @-commands
  315.   Regular game commands: get, inventory, etc.
  316.   Enter aliases
  317.   Leave aliases
  318.   User-defined commands on nearby objects. All such $commands are matched
  319.     and executed.
  320.   If there are no user-defined commands nearby:
  321.     If the zone of the player's location is a parent room,
  322.     Parent room exits
  323.     Parent room user-defined commands
  324.     Else
  325.     User-defined commands on the zone of the player's location
  326.   If still nothing is matched:
  327.      User-defined commands on the player's personal zone
  328.   If nothing, including zone commands, has been matched:
  329.      Global exits
  330.      Global user-defined commands: all $commands in the Master Room are
  331.     matched. Local commands are always checked first and ALWAYS negate
  332.     global commands.
  333.  
  334. & OBJECT PARENTS
  335.   
  336.   Objects may have "parent" objects, from which they can inherit attributes.
  337.   Once an object is given a parent, it may use the attributes on the parent
  338.   just as if the attributes were on the object itself, including checking for
  339.   $commands. Use the @parent command to change the parent of an object.
  340.   See 'help @parent' for details.
  341.   
  342.   For the purposes of automated game checks, the following attributes are
  343.   not inherited: CHARGES, EALIAS, LALIAS, LAST, LASTSITE, LISTEN, QUEUE,
  344.   RQUOTA, SEMAPHORE, and STARTUP. These may be "inherited" via the use of
  345.   functions like get(), but the game does not check inheritance for startup
  346.   triggering, enter/leave aliases, runout checking, etc.  Players cannot
  347.   be @parented, but the parent of an object can be set to a player.
  348.     
  349.   Objects may have multiple levels of parents - thus, if #100 is the
  350.   parent of #101, which is the parent of #102, object #102 checks itself,
  351.   #101, and #100 for attributes. Attributes are checked on the object
  352.   itself first, followed by its parent, followed by that parent's parent,
  353.   and so forth. There is a (configurable) maximum number of ancestors
  354.   an object may have; the default is 10.
  355.    
  356.   See 'help PARENTS2' for more.
  357.   
  358. & PARENTS2
  359.  
  360.   Note that the only properties inherited are attributes. In particular,
  361.   flags and exits are NOT inherited from the parent object. Also, commands
  362.   which walk the attribute list, such as "examine", the LATTR() function,
  363.   @set, and @edit, only affect attributes that are on the object itself.
  364.  
  365.   There are some limitations to the use of @parent. The most important is
  366.   that ^-pattern checking is not done on the parent of an object, regardless
  367.   of what is on the child object.
  368.  
  369.   The attributes inherited from the parent are treated just like its
  370.   own attributes by the child. Thus, when a $-command or @trigger is
  371.   executed, "me", for example, refers to the child, not the parent,
  372.   and the $-command's associated actions are performed by the child.
  373.   Also, the uselock check is done on the child, not on the parent.
  374.  
  375.   Attributes with $-commands _are_ inherited from the parent and
  376.   previous generations. Conflicts are resolved not by the $-command 
  377.   name, but by the attribute name.
  378.  
  379.   See 'help PARENTS3' for more.
  380.  
  381. & PARENTS3
  382.  
  383.   If two attributes are in "conflict", the child's attribute is
  384.   used. Thus, if you have @va #10=$test:@emit I'm the child.
  385.   and @va #11=$moof:@emit I'm the parent., and @parent #10=#11,
  386.   and you type "moof", the parent's command will NOT be matched, 
  387.   because the child's VA is being used. This is true even if
  388.   the child's VA contains no $-command.
  389.  
  390.   If instead, you have @va #11=$test:@emit I'm the parent., and
  391.   you type "test", you will get #10 emitting "I'm the child."
  392.   The command does not get double-matched (presuming, of course,
  393.   that the parent doesn't get triggered normally by being in the
  394.   same room with the person who typed "test").
  395.     
  396.   Since $-command checking only goes one level back, if you had
  397.   a @parent #11=#12, any $-commands on #12 would simply be ignored,
  398.   regardless of what those $-commands were.
  399.   
  400.   See 'help PARENTS4' for more.
  401.  
  402. & PARENTS4
  403.  
  404.   @parent is most useful when several objects use common attributes.
  405.   It is slightly faster to have $commands on the child object which
  406.   in turn @trigger or otherwise retrieve attributes inherited from
  407.   the parent object, rather than having the $commands checked on the
  408.   parent object.
  409.  
  410.   Parent-object $-command checking is at its most efficient when there
  411.   are few or no attributes on the child. Also, each additional level
  412.   of parents further reduces efficiency.
  413.  
  414.   If you are "mass-marketing" your objects, you can create blank copies, 
  415.   and @parent those copies to a template object. You can then customize 
  416.   necessary attributes on the copy. When a buyer @chowns his copy, the 
  417.   parent does not change, so unless you're putting data into the parent 
  418.   that you want to make impossible to read, it's safe to allow the
  419.   purchasers of your object to @chown their copy.
  420.  
  421. & LASTSITE
  422.   LASTSITE
  423.   This attribute gives the name of the site you last connected from.
  424.   Mortals cannot set it.
  425.  
  426. & @alias
  427.   @alias <player>=<alias>
  428.  
  429.   @alias is a special attribute. When a player sets an @alias, he is
  430.   effectively giving himself a secondary name; he can be paged by his
  431.   @alias, and matched with *<alias>, and all other game functions which
  432.   look up player names will also accept the alias. The attribute is
  433.   visible to all players.
  434.   
  435.   The normal conventions for player names apply to aliases; they cannot
  436.   contain spaces or certain special characters, cannot be longer than a
  437.   normal player name, and cannot be used by another player.
  438.   
  439. & @mail
  440.   @mail[/<switches>] [<player>, <msg #>, <command> [= <msg>, <msg #>]]
  441.  
  442.   @mail invokes the built-in MUSH mailer, which allows players to send
  443.   and receive mail. Pronoun/function substitution is performed on
  444.   any messages you may try to send.  
  445.    
  446.   @mail by itself will give you a brief list of all your mail with the user
  447.         name, time the mail was sent, and will mark all NEW mail with a * in
  448.         front of the message.  All the numbers listed here are the ones used
  449.         when you see <msg #>.
  450.   
  451.   @mail <player> = <msg>
  452.         This sends the message <msg> to <player>.  All function subsitutes
  453.         are valid in <msg> including mail(#) which will allow you to forward
  454.         mail you have recieved to other users.
  455.  
  456.   @mail <msg #> 
  457.         This displays the message from your mailbox that has the number 
  458.         <msg #>...
  459.   
  460.   Type 'help @mail2' to continue:
  461. & @mail2
  462.   
  463.   @mail <msg #> = <msg>
  464.         This sends <msg> to the user that sent you the message in your 
  465.         mailbox that has the number <msg #>.  (Essentially a 'reply', but 
  466.         no special effects, just sends <msg> normally)
  467.   
  468.   @mail clear
  469.         This clears ALL mail from your mailbox, unread or not.
  470.   
  471.   @mail clear = <msg #>
  472.         This clears only the message <msg #> and renumbers any messages
  473.         recieved after <msg #>.
  474.   
  475.   Type 'help @mail3' to continue:
  476. & @mail3
  477.   
  478.   The @mail command can also take the following switches:
  479.   
  480.     @mail/stats [<player>]    --  Basic mail statistics.
  481.     @mail/dstats [<player>]   --  Also provides read/unread count.
  482.     @mail/fstats [<player>]   --  Does all that, plus gives space usage.
  483.   
  484.     @mail/debug <action>[=<player>]
  485.   
  486.   Only wizards may stats players other than themselves. The mail statistics
  487.   commands are computationally expensive, and thus are subject to "daytime"
  488.   restrictions. They also cost the same as a @find (100 pennies).
  489.   
  490.   The /debug switch does sanity checking on the mail database, and may only
  491.   be used by a wizard. "@mail/debug sanity" just does the check; the command
  492.   "@mail/debug clear=<player name or dbref number>" wipes mail for an object.
  493.   
  494. & @config
  495.   @config/[<switch>]
  496.   
  497.   This command lists the MUSH configuration parameters, indicating what
  498.   special things are enabled, and the cost of certain commands. If
  499.   something doesn't work the way you expected it to, it might be wise to
  500.   use this command and check the configuration paramters.
  501.   
  502.   This command takes one of three switches:
  503.   
  504.   /defaults   --   Lists parameters set at compile time or startup time,
  505.                    such as quota restrictions.
  506.   /costs      --   Lists costs for various commands.
  507.   /functions  --   Lists all functions.
  508.   /globals    --   Lists runtime parameters, such as logging and "daytime".
  509.   
  510. & @map
  511.   @map <list> = <function or pattern>
  512.  
  513.   This command takes a space-separated list of words, and performs
  514.   pronoun/pattern substitution on each word, returning a list - 
  515.   "mapping" the function onto each item in the list. It returns the
  516.   list in a MAPLIST attribute, automatically set on the object executing
  517.   the @map. The set it always performed before any actions further
  518.   actions are executed.
  519.   
  520.   Brackets are generally necessary in order to make the function
  521.   substitutions evaluate correctly.
  522.   
  523.   See "help @map-2" for examples of @map.
  524.  
  525. & @map-2
  526.  
  527.   Examples of @map:
  528.     @map foobar baz blech=[strlen(##)]
  529.       Returns "6 3 5" in MAPLIST.
  530.     @map testing map-test=[strlen(before(##, est)]
  531.       Returns "1 5" in MAPLIST
  532.     @map Joe Bob Ann=I know ##.
  533.       Returns "I know Joe. I know Bob. I know Ann." in MAPLIST
  534.  
  535.   >  @va Object=$test * * *:@map %0 %1 %2=[strlen(##)];
  536.            @dolist [v(maplist)] = say ##
  537.   Object - Set.
  538.   >  test aaa bb c
  539.   Object says, "3"
  540.   Object says, "2"
  541.   Object says, "1"
  542.    
  543. & @dolist
  544.   @dolist <list> = <action>
  545.   
  546.   @dolist executes the <action> for each element in <list>. If <list> is a
  547.   function, it will be evaluated to obtain the necessary list to use. It
  548.   may be any space-separated list of strings, which can be object numbers,
  549.   attributes, or arbitary words.
  550.   
  551.   <action> is a command or list of commands enclosed in braces { }
  552.   and is performed once for every item in <list>. The special symbol "##"
  553.   is replaced by the corresponding item from <list>.
  554.   
  555.   Example: @dolist [lcon(here)] = "[name(##)]
  556.     would cause you to say the name of all objects in the room.
  557.   
  558. & @fixdb
  559.   @fixdb/<switch> <object>=<value>
  560.   
  561.   This directly sets a field in <object> to <value>.  <value> must be
  562.   an integer.  Note that NO ERROR CHECKING is performed, so if you mess
  563.   up the setting of <value>, you may very well crash or hang the server
  564.   with your database corruption. This command is restricted to wizards
  565.   only and should NEVER be used unless you know PRECISELY what you are
  566.   doing.
  567.   
  568.   - Switch -     - Players/things -       - Rooms -        - Exits -
  569.   location       container object         drop-to          destination
  570.   contents       first object carried     first object     nothing
  571.   exits          home                     first exit       source
  572.   next           pointer to next in contents/exits chain
  573.   
  574. & @readcache
  575.   @readcache
  576.   
  577.   This wizard-only command reads the text files into the cache. This must
  578.   be done every time the text files (connect text, quit text, etc.) are 
  579.   changed while the game is running.
  580.   
  581. & @kick
  582.   @kick <number>
  583.   
  584.   This wizard-only command forces the immediate execution of <number>
  585.   items from the queue.
  586. & @ealias
  587.   @ealias <object> = <enter alias>
  588.   This allows a player to type the enter alias instead of "enter <object>"
  589.   If you have a chair, you coud "@ealias chair = sit down" and then just
  590.   type "sit down" instead of "enter chair" - using the object name is
  591.   not necessary. Note that the enter alias is checked after normal exits.
  592.   Like an exit, it may have a semi-colon separated list of words,
  593.   i.e. sit down;sit;sit on chair
  594. & @lalias
  595.   @lalias <object> = <leave alias>
  596.   This allows a player to type the leave alias instead of the "leave"
  597.   command, in a fashion similar to enter aliases (see @ealias for details).
  598.   The leave alias may be a semi-colon separated list of words, such as
  599.   stand up;stand;get up
  600. & @comment
  601.   @comment <object> = <comment>
  602.   This is a wizard-only command which sets a COMMENT attribute on
  603.   <object>. The comment can only be seen by other wizards and royalty.
  604. & @away
  605.   @away <player> = <message>
  606.   This message is sent to a player who tries to page you when you are
  607.   not connected.
  608. & @haven
  609.   @haven <player> = <message>
  610.   This message is sent to a player whose pages you are refusing, either
  611.   through use of the HAVEN flag or through the use of a page lock.
  612. & @idle
  613.   @idle <player> = <message>
  614.   This message is sent in return to every page which successfully reaches
  615.   you. It is useful if you are idle for long periods of time and wish to
  616.   inform people where you are, or if you are in a meeting and cannot
  617.   quickly return pages.
  618. & @ulock
  619.   @ulock <object> = <key>
  620.   This type of lock is a use-lock for objects, and a page-lock for players.
  621.   On an object, this restricts who may trigger the "@use" set of registers,
  622.   and who may use the $commands on the objects. If the person who is trying 
  623.   to use the object or its special commands, cannot pass the lock, he is 
  624.   told, "Permission denied."  On a player, it restricts who is allowed to 
  625.   page that person. If the paging person cannot pass the lock, the target 
  626.   player is treated as if he were set HAVEN. Indirect locks and other
  627.   special locking styles are supported; see "help @lock" for details.
  628.   Example: if I want everyone but Bob to be able to page me, I would
  629.   "@ulock me=!*Bob". If I want only Bob to be able to page me, I would
  630.   "@ulock me=*Bob".
  631. & @uunlock
  632.   @uunlock <object> = <key>
  633.   Page-unlocks a player or use-unlocks a thing. Someone who is page-unlocked
  634.   may be paged by anyone; an object which is use-unlocked may be used by
  635.   anyone. See "help @ulock" for more.
  636. & @efail
  637.   @efail <object> = <message>
  638.   This is the message shown to the player who fails to enter the object.
  639. & @oefail
  640.   @oefail <object> = <message>
  641.   This message is shown to the location of a player who fails to enter
  642.   the object.
  643. & @aefail
  644.   @aefail <object> = <action>
  645.   This is the action taken by the object when a player fails to enter it.
  646. & @elock
  647.   @elock <object> = <key>
  648.   Enter-locks an object, restricting who is allowed to enter it. Special
  649.   lock types are supported (see "help @lock" for details). Only objects
  650.   which are ENTER_OK may be entered, regardless of the key.
  651.  
  652.   The enter lock of a room is its Teleport Lock. Only people who pass
  653.   the room's teleport lock, are wizards or royalty, or control the room,
  654.   will be allowed to @teleport into the room. (Note that this is different
  655.   from NO_TEL, which prevents people from teleporting out of a room).
  656.   The teleport lock is evaluated even if the room is JUMP_OK - in other 
  657.   words, if you are trying to teleport into a room you don't control, the 
  658.   room must be JUMP_OK, and you must pass the teleport lock.
  659.  
  660.   Note that the enter lock of an object or room being used as a Zone
  661.   Master Object determines control of that zone. Please note that if
  662.   you're using a room as a ZMO (i.e. as a parent room), only the
  663.   controllers of that zone will be able to teleport into that room
  664.   (which is a good thing for security).
  665.   
  666. & @eunlock
  667.   @eunlock <object>
  668.   Enter-unlocks an object, in a fashion similar to @unlock. For anyone
  669.   to be able to enter an object, it must be both @eunlocked and ENTER_OK.
  670. & @nuke
  671.   @nuke <object>
  672.   Destroys an object, overriding the SAFE flag. Aside from this
  673.   feature, it is identical to @destroy. This command is equivalent
  674.   to @destroy/override.
  675. & drop 
  676.   drop <object>. Drops <object>. Dropping a thing in the temple
  677.   sacrifices it (See SACRIFICING). Otherwise, a dropped thing is 
  678.   relocated to the current room, unless its STICKY flag is set 
  679.   (See STICKY), or the room  has a drop-to (See DROP-TOs). Unlinked 
  680.   exits can only be dropped in rooms you  control. 
  681.   
  682. & examine
  683.   examine[/<switch>] <object>[/<attribute>] 
  684.   
  685.   Displays all available information about <object>.  <object> may be an 
  686.   object, 'me' or 'here'. You must control the object to examine it.  If 
  687.   you do not own the object, or it is not visible, you will just see the 
  688.   name of the object's owner.  May be abbreviated 'ex <object>'.  If the 
  689.   attribute parameter is given, you will only see that attribute (good 
  690.   for looking at code). You can now wild-card match on attributes.  For 
  691.   example. to see all the attributes that began with a 'v' you could do 
  692.   ex <object>/v*
  693.   
  694.   Examine takes two switches, "brief"  (equivalent to the "brief" command),
  695.   and "debug", which is a wizard-only switch.  "debug" examine will show
  696.   the raw values for certain fields in an object.
  697.   
  698. & brief
  699.   brief <object>. It is identical to "examine", except that it does
  700.   not print the attributes on an object. This is useful for just
  701.   glancing at an object to determine its home, owner, lock, etc.
  702.  
  703. & get
  704.   get <object>. Picks up <object>. <object> can be a thing or an 
  705.   unlinked exit. 'take' is the same as 'get'. 
  706.   You can now also do get <thing>'s <object>.  It will fail if 
  707.   either thing is not ENTER_OK or object is locked against you.
  708.  
  709. & give
  710.   give <player>=<pennies/object>. Gives player the specified number of 
  711.   pennies or <object>. You can't give someone pennies if their new total 
  712.   would be greater than 10000 pennies. (No reason to get greedy)  You 
  713.   may also give players objects, but the other player must be set to 
  714.   enter_ok (See FLAGS) to receive something you give. 
  715.  
  716. & goto
  717.   go[to] <direction>; go[to] home. Goes in the specified direction. 
  718.   'go home' is a special command that returns you to your starting 
  719.   location. The word 'go' may be omitted. 'move' is the same as 'go'.
  720.  
  721. & inventory
  722.   inventory. Lists what you are carrying. 
  723.   Can be abbreviated by just 'i', or 'inv'.
  724.  
  725. & kill
  726.   kill <player> [=<cost>]. Attempts to kill the specified player. 
  727.   Killing costs <cost> pennies, which gives you a <cost>% chance of 
  728.   killing the player. Thus, spending 100 pennies always works (except 
  729.   against wizards,  who can never be killed). Players cannot be 
  730.   killed in rooms which have been set HAVEN. (See FLAGS and HAVEN).  
  731.   If you don't specify a cost, the default is 10 (i.e. 10%).  The 
  732.   player, if killed, receives <cost>/2 pennies in insurance.
  733.  
  734. & look
  735.   look[/<switch>] [<object>]. 
  736.   
  737.   Displays the description of <object>, or the room 
  738.   you're in if object is eliminated.  Specifying object as <name> or 
  739.   #<dbref> or 'me' or 'here' is legal. 'read' is the same as 'look'.
  740.   You can also use look to look at object's held by other people, 
  741.   just use 'look <person>'s <object>'.
  742.   'look' may be abbreviated 'l'.
  743.   
  744.   Look does take one switch, "outside". look/outside allows you to
  745.   look at objects outside your current location, as long as your
  746.   immediate location is not a room, and is not OPAQUE.
  747.   
  748. & move
  749.   Same as GO.  (What, you expect me to type it out twice?)
  750. & news
  751.   Shows you the current news for MUSH. It is highly recommended that
  752.   you check the news daily for new information.  Otherwise, the
  753.   wizards will have no pity on you for messing up with the new
  754.   commands.
  755. & events
  756.   A file similar to news, dealing with special events and topics with
  757.   the MUSH. You should check the events daily for new information,
  758.   or you may rapidly become slightly lost.
  759. & page 
  760.   page [<player>] [=<message>]. This tells a player that you are
  761.   looking for them, and tell the player where you are.  They will get
  762.   a message telling them your name and and location if you omit the
  763.   message. This costs 1 penny.  If you include the '=<message>', it
  764.   will tell the player your name and your message, but not your
  765.   location.  If a player is set to HAVEN (See FLAGS), you
  766.   cannot page them, and they will not be notified that you tried.
  767.   If the player is page-locked against you, he is treated as HAVEN.
  768.   Page will also attempt to partial match on the name.  If you omit the
  769.   player, the game will attempt to page the player you paged last.
  770.   If the first character of <message> is a : or a ;, it will send the
  771.   page in pose format.  (see pose, : and ;)
  772.   Objects may page players, but not vice versa. If an object pages
  773.   a NOSPOOF player, that player will see the object's number in
  774.   square brackets, in front of the message, in a fashion similar to
  775.   the way NOSPOOF flags emits.
  776. & QUIT    
  777.   QUIT. Log out and leave the game. Must be in all capitals.  
  778. & LOGOUT
  779.   LOGOUT is similar to QUIT, but instead of disconnecting you from the
  780.   game completely, it merely disconnects you from your current character
  781.   and returns you to the opening welcome screen. This is useful if you
  782.   want to disconnect and then reconnect to another character.
  783. & read 
  784.   See 'look'.  (See move for reason you have to see look)
  785. & "
  786.   See say. 
  787. & :
  788.   See pose.
  789. & ;
  790.   This command is much like pose, however where with pose, the action
  791.   and the person's name who commits the action are separated by a 
  792.   space, with ;, they are not.  Example: ;'s watch beeps. -- The room
  793.   would see <name>'s watch beeps.
  794. & +
  795.   See @chat.
  796. & &
  797.   See NON-STANDARD ATTRIBUTES.
  798. & say
  799.   say <message>. Says <message> out loud. You can also use 
  800.   '"<message>'.  See also 'whisper', 'pose', and ';'. 
  801.   (Note: Say and " append a " to whatever you type in)
  802. & score
  803.   score. Displays how many pennies you are carrying.  Helpful to see if
  804.   any machines are looping.  Also see looping, @ps, and most of the 
  805.   commands that start with @.
  806. & slay
  807.   slay <player/object> This is a Wizard command that kills players 
  808.   without paying any insurance to the victims. It is used in places 
  809.   where 'suicide' should not pay.
  810.   (Su-ic-ide is pain-less... {MASH theme})
  811. & take
  812.   See 'get'.  
  813. & whisper 
  814.   whisper <player>=<message>. Whispers the message to the
  815.   named person, if they are in the same room as you. No one else can
  816.   see the message. You can also whisper to things you are carrying,
  817.   or to things that are carrying you. whisper <player>=:<pose> also 
  818.   works, in a fashion similar to page-pose.
  819.   'whisper' can be abbreviated by just 'w'.  
  820. & WHO
  821.   WHO   Displays a list of players currently connected to the MUSH.
  822.   The WHO tells you how long a player has been on and how long they
  823.   have been inactive. 
  824. & DOING
  825.   This command displays the list of players currently connected to the
  826.   MUSH. For mortals, it is identical to WHO. For wizards, it displays
  827.   the WHO in the format mortals see. The wizard WHO shows location and
  828.   host, but does not show @doing messages. DOING shows @doing messages
  829.   but not location or host.
  830. & @poll
  831.   @poll <poll question>
  832.   This wizard-only command sets the "poll" - the Doing question. If
  833.   "@poll" is used by itself, the question is reset to the default
  834.   string "Doing". 
  835. & @aahear
  836.   An Aahear on an object is activated whenever the listen pattern
  837.   matches anything done/said by anything else in the room, and 
  838.   itself.  (Ahear ignores itself, helpful from keeping machines from 
  839.   triggering itself)  See @listen, @ahear, @amhear.
  840. & @aclone
  841.   The @aclone of an object is the action to be executed when that
  842.   object is @cloned. It works just like other @a<whatever> attributes.
  843.   Please note that there is no @oclone, and that @clone is always a
  844.   command, not an attribute.
  845. & @adescribe
  846.   @adescribe <object> = <actions>. 
  847.   
  848.   Sets the actions to be taken when  <object> is looked at. Actions are 
  849.   lists of commands separated by semi-colons and these commands are 
  850.   executed by the object (see also PUPPET). Things can execute almost any 
  851.   command but rooms and exits are restricted to forcing objects/puppets to 
  852.   do things. Function/percent substitutions are applied to the commands b
  853.   efore they are executed. <object> can be specified as <name> or #<number>, 
  854.   or as 'me' or 'here'.  May be abbreviated @adesc. See also @describe, 
  855.   @idescribe and @odescribe.
  856.   
  857.   Some people find @adescs on people to be annoying. Be aware of this
  858.   before you set one.
  859. & @afailure
  860.   @afailure <object> = <actions>. Sets the actions to be taken on 
  861.   failure to use <object>. Actions are lists of commands separated by
  862.   semi-colons and these commands are executed by the object (see 
  863.   puppet).  Things can execute almost any command but rooms and exits
  864.   are restricted to forcing objects/puppets to do things. Gender 
  865.   substitutions are applied to the commands before they are executed,
  866.   this allows use of the players name who caused the action.  
  867.   <object> can be specified as <name> or #<dbref>, or as 'me' or 
  868.   'here'. May be abbreviated @afail. See also @fail and @ofail.
  869. & @ahear
  870.   @ahear <object> = <actions>. Sets the actions to be taken after a 
  871.   string set in the @listen (See @listen) is matched. Actions are 
  872.   lists of commands separated by semi-colons and these commands are 
  873.   executed by the object (see puppet). Objects can execute almost 
  874.   any command. Gender substitutions are applied to the commands 
  875.   before they are executed, this allows use of the players name who 
  876.   caused the action. 
  877.   See also @aahear and @amhear.
  878. & @adeath
  879.   @adeath <object> = <actions>. Sets the actions to be taken after 
  880.   <object> is killed. Actions are lists of commands separated by semi 
  881.   colons and these commands are executed by the object (see puppet) 
  882.   Objects can execute almost any command. Gender substitutions are 
  883.   applied to the commands before they are executed, this allows use 
  884.   of the players name who caused the action.  
  885.   See also @odeath and @death.
  886. & @amhear
  887.   @amhear is like @ahear, only the @listen string/pattern is only
  888.   applied to statements/strings that the object itself generates.
  889.   @amhear and @ahear together equal @aahear.  See @ahear, @listen,
  890.   and @aahear.
  891. & @apayment
  892.   @apayment <object> = <actions>. Sets the actions to be taken after a
  893.   player gives object pennies (see @cost). Actions are lists of 
  894.   commands separated by semi-colons and these commands are executed 
  895.   by the object (see puppet). Objects can execute almost any command.
  896.   Gender substitutions are applied to the commands before they are 
  897.   executed, which allows use of the player's name who caused the 
  898.   action. May be abbreviated @apay. See also @pay and @opay.
  899. & @ause
  900.   @ause <object> = <actions>. Sets the actions to be taken when an
  901.   object is succesfully "used". Actions are lists of commands separated
  902.   by semi-colons. This functions in a similar manner to the other
  903.   @a-attributes, such as @asuccess and @apayment.
  904. & @asuccess
  905.   @asuccess <object> = <actions>. Sets the actions to be taken on 
  906.   successful usage of <object>. Actions are lists of commands 
  907.   separated by semi-colons and these commands are executed by the 
  908.   object (see puppet). Objects can execute almost any command. Gender
  909.   substitutions are applied to the commands before they are executed,
  910.   this allows use of the players name who caused the action. It can 
  911.   be abbreviated @asucc. <object> can be specified as <name> or 
  912.   #<dbref>, or as 'me' or 'here'. See also @success and @osuccess. 
  913.  
  914. & @adrop <object> = <actions>. Sets the actions to be taken when
  915.   <object> is dropped. See "help @asuccess" for a more detailed
  916.   explanation of action attributes.
  917.  
  918. & use
  919.   use <object>
  920.   Attempts to use an object, triggering its @use/@ouse/@ause attributes.
  921.   The person using the object must pass its uselock; no inheritance check
  922.   is necessary. This is may be done remotely, by using a dbref number;
  923.   it provides an easy way for non-INHERIT objects to perform commands on
  924.   INHERIT objects.
  925.  
  926. & @boot
  927.   @boot <player>    or   @boot/port <descriptor number>
  928.  
  929.   Disconnects the player from the game. The /port switch takes a 
  930.   descriptor number instead (the "Port" number in WHO for wizards).
  931.   Only Wizards can use this command, so you better not be naughty! Heh!
  932.  
  933.   (Well, you can be naughty... it's annoying that gets on the nerves
  934.    of wizards real quickly. Ex: @adesc me = kill %N = 100 will get you 
  935.    @booted real quickly.)
  936.  
  937. & @charges
  938.   @charges <object> = <integer>. Allows you to limit the # of times 
  939.   an action can be used. If there is a charges attribute it is 
  940.   decremented each time an action is triggered, once it reaches zero 
  941.   actions are disabled. See also @runout.
  942.  
  943. & @chown
  944.   @chown <object>=<player>. Changes the ownership of <object> to 
  945.   <player>.  Objects may be things, rooms or exits. To chown things, 
  946.   you have to be carrying the thing. For rooms or exits, you have to 
  947.   be in the room. Objects must have the chown_ok flag set before it 
  948.   can be @chowned (See FLAGS).  In a room, the command used must be
  949.   @chown here = <name>, and for an object, you must be very specific.
  950.   Note:  @chown DOES understand the pronoun me.
  951.   Players can't be @chowned; they always own themselves.
  952.  
  953. & @chzone
  954.   @chzone <object>=<zone object>. Changes the zone of <object> to
  955.   <zone object>. If <zone object> is "none", the zone is reset to
  956.   NOTHING. @chzone'ing a player does not automatically change the
  957.   zone of his objects.
  958.   Anyone may reset the zone of an object he owns; the zone he changes
  959.   the object zone must either be "none", or must be owned by him.
  960.   Only wizards may @chzone an object to an arbitrary zone object.
  961.   Players may @chzone themselves to an object they own; otherwise,
  962.   only wizards may @chzone players. @chzone'ing resets the WIZARD, 
  963.   ROYALTY, and INHERIT flags on non-player objects. See "help ZONES" 
  964.   for an explanation of zones.
  965. & @chzoneall
  966.   @chzoneall <player>=<zone object>. Changes the zone of all objects
  967.   owned by <player> to <zone object>. If <zone object> is "none",
  968.   the zone is reset to NOTHING. Only wizards may use this command.
  969. & @clone
  970.   @clone <object or exit>
  971.   For objects, creates an exact duplicate of it and puts it in the
  972.   current room. For exits, it creates an exact duplicate of that
  973.   exit, except the clone's source is the current room rather than
  974.   whatever the original exit's source was.
  975. & @cost
  976.   @cost <object> = <amount> number of pennies that need to be given to 
  977.   an object to trigger @pay, @opay and @apay. Example: 
  978.   @cost exit-machine=10
  979.   @apay exit-machine=@open %N-exit 
  980.   @pay exit-machine=Your exit has been created.  
  981. & @create
  982.   @create <name> [=<cost>]. Creates a thing with the specified name. 
  983.   Creation costs either <cost> pennies or 10 pennies, whichever is 
  984.   greater. The value of a thing is proportional to its cost. To be 
  985.   exact, value=(cost/5)-1.  Value cannot be greater than 100, any
  986.   values that would be greater than 100 are rounded down to 100.
  987.   (see give re: greed)
  988. & @describe
  989.   @describe <object> [=<description>]. <object> can be a thing, 
  990.   player, exit, or room, specified as <name> or #<number> or 'me' or 
  991.   'here'.  This sets the description a player sees when they use the 
  992.   command 'look <object>'. Without a description argument, it clears 
  993.   the message. It can be abbreviated @desc.  @desc's on everything 
  994.   that isn't dark is considered to be Good Building Practice.
  995. & @destroy
  996.   @destroy[/override] <object>
  997.   
  998.   Recycles <object> and returns the player's investment (the cost of @create)
  999.   You should always @destroy objects you no longer need; this keeps the 
  1000.   database down to a manageable size. 
  1001.   
  1002.   @destroy may be used to recycle any object but will have a delayed 
  1003.   effect on rooms.  Rooms are removed approximately every ten minutes, 
  1004.   until then, they have the Going (G) flag set on them.  Should you 
  1005.   change your mind, simply@set <room> = !Going.  
  1006.   
  1007.   The queue for destroyed objects is automatically cleared. In addition,
  1008.   the equivalent of a @drain is performed: all commands waiting on it
  1009.   as a semaphore are immediately discarded(not run at all).
  1010.   You should always @destroy objects that you no longer need. This
  1011.   keeps the database down to a manageable size.
  1012.  
  1013.   The SAFE flag protects objects from destruction. The /override
  1014.   switch negates this protection (and is equivalent to "@nuke").
  1015.   The DESTROY_OK flag allows anyone who is holding an object to
  1016.   @destroy it. This is good for "temporary" objects like "Can of Cola".
  1017. & @dig
  1018.   @dig[/teleport] <name> [= <name>[;<other name>]*[,<name>[;<other name>]*]]
  1019.   
  1020.   Creates a new room with the specified name and displays its number.
  1021.   This costs 10 pennies. If the [= <name>....*] option is used, the
  1022.   exit will be opened and linked for you.  The [,<exit>...*] option
  1023.   will link a reverse exit for you.
  1024.   If the "teleport" switch is supplied, the digger will be teleported
  1025.   into the new room automatically.
  1026.   
  1027.   Example: @dig Kitchen = Kitchen;k;north;n will dig a room called 
  1028.     Kitchen, and open an exit called 'Kitchen' in your current room. 
  1029.   Example 2: @dig Kitchen = Kitchen;k;north;n,out;o;south;s will dig
  1030.     a room called Kitchen, open an exit called 'Kitchen' in the current
  1031.     room, AND open an exit 'out' in the room 'Kitchen' leading to the
  1032.     current room.
  1033.   The ; symbol means that you may enter the exit by typing 
  1034.   'k','north' or 'n' also.  Only the first Exit name is displayed in
  1035.   the Obvious exits list.
  1036. & @drop
  1037.   @drop <object> [=<message>]. <object> can be a thing, player, exit,
  1038.   or room, specified as <name> or #<number> or 'me' or 'here'. Sets 
  1039.   the drop message for <object>. The message is displayed when a 
  1040.   player drops <object>. Without  a message argument, it clears the 
  1041.   message. 
  1042.   See also @odrop and @adrop.
  1043. & @gedit
  1044.   @edit now takes wildcard patterns, so this command is merely an alias
  1045.   for @edit, kept for backwards compatbility. See "@edit" for details.
  1046. & @edit
  1047.   @edit <object>/<pattern> = <search>,<replace> 
  1048.   @edit <object>/<pattern> = $,<string to append>
  1049.   @edit <object>/<pattern> = ^,<string to prepend>
  1050.  
  1051.   This is useful when you don't want to have to retype those obnoxiously 
  1052.   long descriptions just to make one little change.  Instead, search and 
  1053.   replace via @edit.  
  1054.   
  1055.   <pattern> is a pattern, optionally containing wildcards, for the attribute 
  1056.   names you wish to edit. Only attributes already defined on <object> may be 
  1057.   edited. <search> and <replace> are two strings. It's also possible to use 
  1058.   "$" and "^" to signal appending and prepending text, respectively.
  1059.   
  1060.   If the text contains commas, precent signs, or similar special characters,
  1061.   it usually must be enclosed in curly braces.
  1062.   
  1063.   See also ATTRIBUTES.
  1064. & @grep
  1065.   @grep[/<switch>] <object>[/<attrs>]=<pattern>
  1066.   
  1067.   This command searches attributes in an object for <pattern>.
  1068.   It can taken one of two switches, "list" and "print".  The default
  1069.   is "list", and simply lists the attributes in the object which contain
  1070.   the pattern.  The "print" switch prints out all the attributes which
  1071.   contain the pattern, hiliting the pattern itself in boldface  (you must
  1072.   be ANSI_DISPLAY in order to use this switch).
  1073.   
  1074.   You must be able to see attributes on <object> (i.e. you must control
  1075.   the object, it must be VISUAL, or you must be a Wizard or Royalty).
  1076.  
  1077.   <attrs> is an optional wildcard pattern specifying attributes to
  1078.   match (much like @edit). If <attrs> is not provided, all attributes
  1079.   are assumed (just as if you had provided "*").
  1080.    
  1081.   <pattern> is not treated as a wildcard pattern, so you can grep for
  1082.   patterns containing '*', '?', etc.  Also, <pattern> is NOT PARSED,
  1083.   so '[v(0)]' and the like can be searched for.
  1084. & @emit
  1085.   @emit [/room] <message>  This send message to every person in the 
  1086.   current room. However, no identifier marking it as being sent by you 
  1087.   is shown.  For example, @emit foo would show 'foo' to every object in 
  1088.   the room. The /room switch makes this command equivalent to "@lemit".
  1089.   See also @pemit, @remit, @oemit, @lemit, NOSPOOF and SPOOFING.
  1090. & @failure
  1091.   @failure <object> [=<message>]. <object> can be a thing, player, exit,
  1092.   or room, specified as <name> or #<number> or 'me' or 'here'. Sets 
  1093.   the fail message for <object>. The message is displayed when a 
  1094.   player fails to use <object>.  Without a message argument, it 
  1095.   clears the message. May be abbreviated @fail. See also @afail and
  1096.   @ofail. Putting @fails on all exits and objects that are locked is 
  1097.   Good Building Practice.
  1098. & @find
  1099.   @find [<name>] [=<begin>,<end>]
  1100.  
  1101.   Displays the name and number of every room, thing, or
  1102.   player that you control whose name matches <name>. Because the
  1103.   command is computationally expensive, this costs 100 pennies.
  1104.   You can limit the range of the @find by specifying <begin> and
  1105.   <end>, where these are the first and last dbrefs to examine.
  1106.   
  1107. & @force
  1108.   @force <player/object>=<command>. Forces the game to act as though
  1109.   <player/object> had entered <command>.  Only wizards may force
  1110.   players. May be abbreviated @fo.  Wizards cannot be forced by
  1111.   players. Hard luck. You can always force objects you control, and
  1112.   will probably use this command to manipulate puppets.
  1113.   An abbreviated form of this command is simply "<#dbref> <command>".
  1114.     
  1115. & @death
  1116.   @death <player> [=<message>]. <player> can be specified as <name> or
  1117.   #<dbref> or 'me' or 'here'. Sets the death message for <player>. The
  1118.   message is displayed when <player> is killed. Without  a message 
  1119.   argument, it clears the message.  See also @adeath and @odeath.
  1120. & @idescribe
  1121.   @idescribe <object> [=<message>].  Sets object's internal description. 
  1122.   The internal description of an object will be shown to any object 
  1123.   entering it.  Without a message argument, it shows the usual @desc.
  1124.   (see enter, @enter, @oenter, and enter_ok).  May be abbreviated @idesc
  1125. & @link
  1126.   @link <object>=<number>; @link <object>=here; 
  1127.   @link <dir>|<room>=home. Links <object> to room specified by 
  1128.   <number>. For things and players, sets the home room (See HOMES). 
  1129.   For rooms, sets the drop-to room (See DROP-TOs). For exits, sets 
  1130.   the target room; exits must be unlinked, and you must own/control 
  1131.   the target room unless its LINK_OK flag is set. Linking an exit 
  1132.   costs 1 penny. If the exit was owned by someone else, the former 
  1133.   owner is reimbursed 1 penny. (see @open, @dig)
  1134.   
  1135.   LINK_OK objects can also be used as semaphores, and any object
  1136.   can be @parented to them.
  1137. & @listen
  1138.   @listen <object> = <string>. A wildcard pattern for an object to 
  1139.   listen for.  If/when <string> is heard, the object's ahear is
  1140.   triggered. Note: if @listen is matched the objects contents will
  1141.   also hear the message. See "help LISTEN" for more details.
  1142. & @lock
  1143.   @lock[/<switch>] <object>=<key> 
  1144.   
  1145.   Locks <object> to a specific key(s). <object> can be specified as 
  1146.   <name> or #<number>, or as 'me' or 'here'. 
  1147.   Boolean expressions are allowed, using '&' (and), '|' (or), 
  1148.   '!' (not), and parentheses ('(' and ')') for grouping. To lock to a
  1149.   player, prefix their name with '*' (ex. '*Moonchilde').
  1150.  
  1151.   The available switches on this command are /enter, /tport, /use, and 
  1152.   /page. The first two are equivalent to @elock, and the latter two to
  1153.   @ulock.
  1154.  
  1155.   Example:
  1156.    @lock Purse = me|*Darling will lock object purse so that only you 
  1157.    or player Darling can take it.
  1158.  
  1159.   See "help @lock2" for more.
  1160.  
  1161. & @lock2
  1162.   There are six types of special locks: Indirect, Carry, Is, Owner,
  1163.   Attribute, and Evaluation locks.
  1164.  
  1165.   Indirect locks -- locks an object to the lock of the specified 
  1166.   object.  Good if you have many locks with the same key, simply 
  1167.   lock all the locks to one object, then lock that object to the 
  1168.   common key.
  1169.   Example:
  1170.     @lock foo=@bar    locks foo to bar's key.
  1171.  
  1172.   Carry lock -- You can go though only if you carry foo.  
  1173.   Example:
  1174.     @lock bar = +foo
  1175.   
  1176.   Is lock -- You can only go through if you ARE foo. 
  1177.   Example:
  1178.     @lock bar = =foo
  1179.   The last two are different from @lock foo = bar in that 
  1180.   @lock foo=bar will let you pass either if you carry bar or are bar.
  1181.   
  1182.   See "help @lock3" for more.
  1183.  
  1184. & @lock3
  1185.   
  1186.   Owner lock -- You can only go through if you have the same owner as foo.
  1187.   Example:
  1188.     @lock bar = $foo
  1189.   
  1190.   Attribute lock -- You can only go through if you have an attribute
  1191.   set on yourself which matches the value of the attribute lock.
  1192.   The value is a string which may contain wildcards, greater than,
  1193.   and less than.
  1194.   The locked object must be able to read the attribute from the thing
  1195.   trying to pass the lock; if it cannot do so, the thing cannot pass
  1196.   the lock. (So, mortals can generally only usefully lock to public
  1197.   attributes like 'sex', or to attributes on their own objects).
  1198.   All attribute locks take the format @lock thing=attribuate:value
  1199.   Example:
  1200.     @lock thing=sex:m*      will lock thing to anyone whose sex attribute
  1201.                             starts with an 'm'.
  1202.     @lock exit=name:<g      will lock the exit against any one whose name
  1203.                             is higher than f.
  1204.  
  1205.   See "help @lock4" for more.
  1206.  
  1207. & @lock4
  1208.   Evaluation locks -- These locks take the form @lock thing=attribute/value
  1209.   They are thus very similar in form to attribute locks. These locks are
  1210.   checked by evaluating the contents of <attribute> and comparing it to
  1211.   <value>; a lock is passed if these are equal.
  1212.   
  1213.   <Attribute> may be thought of much like a user-defined function; its
  1214.   contents are evaluated with the equivalent of EVAL(thing, attribute)
  1215.   For the purposes of evaluation, the player trying to pass the lock
  1216.   on thing is the enactor (%N) and the thing is "me" (%!)
  1217.   
  1218.   Example: @lock thing = Ispuppet/1
  1219.            &Ispuppet thing = [hasflag(%#, PUPPET)]
  1220.   
  1221.   This locks thing to puppets only. If player tries to pass the lock on
  1222.   thing, Ispuppet evaluates to: [hasflag(<player dbref>, PUPPET)]
  1223.   and the function returns 0 or 1 depending on whether or not player
  1224.   is a puppet. The lock is passed if the evaluation equals "1".
  1225.  
  1226.   See "help @lock5" for more.
  1227.   
  1228. & @lock5
  1229.   Evaluation locks are extremely flexible; you can even use them to
  1230.   imitate other types of locks. For example, instead of @lock object = #5
  1231.   you can use @lock object = VA/#5   and   @va object = %#
  1232.   (This is somewhat foolish, but you can do it if you want to.)
  1233.   
  1234.   These locks are evaluated with the priviledges of the locked object;
  1235.   thus, if you  @lock object = VA/5   and  @va object = [strlen(get(%#/VZ))]
  1236.   and the object does not have permission to read VZ from the player
  1237.   trying to pass the lock, the player automatically fails to pass the
  1238.   lock.
  1239. & @name
  1240.   @name <object>=<new name> [<password>]. Changes the name of 
  1241.   <object>.  <object> can be a thing, player, exit, or room, 
  1242.   specified as <name> or #<dbref> or 'me' or 'here'. For a player, 
  1243.   it requires the player's password.
  1244. & @newpassword
  1245.   @newpassword <player> =<password>. Only wizards may use this 
  1246.   command.  Changes <player>'s password, informing <player> that you 
  1247.   changed it.  Must be typed in full. If you forget your password, 
  1248.   log on as guest (password = guest) and talk to a Wizard.
  1249. & @odescribe
  1250.   @odescribe <object> [=<message>]. The odescribe message, prefixed 
  1251.   by the player's name, is shown to others when the player looks at 
  1252.   <object>. Without a message argument, it clears the message. 
  1253.   <object> can be specified as <name> or  #<number>, or as 'me' or 
  1254.   'here'. May be abbreviated @odesc. See also @describe, @adescribe 
  1255.   and @idescribe.
  1256. & @odrop
  1257.   @odrop <object> [=<message>]. The @odrop message, prefixed by the 
  1258.   player's name, is shown to others when the player drops <object>. 
  1259.   Without a message argument, it clears the message. <object> can be 
  1260.   specified as <name> or #<number>, or as 'me' or 'here'. See also 
  1261.   @drop and @adrop.
  1262. & @ofailure
  1263.   @ofailure <object> [=<message>]. The @ofail message, prefixed by the 
  1264.   player's name, is shown to others when the player fails to use 
  1265.   <object>. Without a message argument, it clears the message. 
  1266.   <object> can be specified as <name> or #<dbref>, or as 'me' or 
  1267.   'here'.  May be abbreviated @ofail.
  1268.   See also @afail and @fail.  (Note: @ofails on locked exits and
  1269.   objects is considered Good Building Practice.)
  1270. & @odeath
  1271.   @odeath <player> [=<message>]. The @odeath message, prefixed by the 
  1272.   player's name, is shown to others when the player is killed. 
  1273.   Without a message argument, it clears the message. <player> can be 
  1274.   specified as <name> or #<dbref>, or as 'me' or 'here'. See also 
  1275.   @adeath and @death.
  1276. & @opayment
  1277.   @opayment <object> [=<message>]. The opay message, prefixed by the 
  1278.   object's name, is shown to others in the room with object when someone
  1279.   'pays' for something. Without a message argument, it clears the message.
  1280.   <player> can be specified as <name> or  #<dbref>, or as 'me' or 'here'.
  1281.   May be abbreviated @opay. See also @apay, @pay, and @cost.
  1282. & @open
  1283.   @open <direction>[;<other direction>]* [=<number>][,<dir>[;<other dir]*].
  1284.   Creates an exit in the specified direction(s). If <number> is specified,
  1285.   it is linked to that room. Otherwise, it is created unlinked. You or 
  1286.   anyone else may use the '@link' command to specify where the unlinked
  1287.   exit leads.  Opening an exit costs 1 penny. If you specify <number>,
  1288.   linking costs 1 more penny.  If you specify a room, you may also specify
  1289.   an exit leading from that room back to the current room.  This second back
  1290.   exit costs the same as the forward one.  See also @link and @dig.  
  1291. & @osuccess
  1292.   @osuccess <object> [=<message>]. The @osuccess message, prefixed by
  1293.   the player's name, is shown to others when the player successfully 
  1294.   uses <object>.  Without a message argument, it clears the @osuccess
  1295.   message. It can be abbreviated @osucc. <object> can be specified as
  1296.   <name> or #<number>, or as 'me' or 'here'. See also @success and 
  1297.   @asuccess. (Putting @osuccs on all useable exits and takeable 
  1298.   objects is considered Good Building Practice, especially if it
  1299.   allows people to follow people w/o shouting out which exit to take
  1300.   each time you leave a room.)
  1301. & @ouse
  1302.   @ouse <object> [=<message>]. The @use message, prefixed by the player's
  1303.   name, is shown to others when a player successfully does a "use" on
  1304.   the object. Without a message argument, it clears the @ouse message.
  1305.   See also @use and @ause.
  1306. & @tport
  1307.   @tport <object> [=<message>]
  1308.   
  1309.   Sets the <message> shown to <object> when <object> is teleported.
  1310. & @otport
  1311.   @otport <object> [=<message>]
  1312.  
  1313.   Sets the <message>, which will be prefixed by <object>'s name,
  1314.   that will be shown to the others in the room that the <object>
  1315.   is teleported to.
  1316. & @atport
  1317.   @atport <object> [=<action list>]
  1318.  
  1319.   Sets the list of actions that <object> will perform when it is
  1320.   teleported. These actions are done after <object> has arrived
  1321.   in its new location.
  1322. & @oxtport
  1323.   @oxtport <object> [=<message>]
  1324.   
  1325.   Sets the <message>, which will be prefixed by <object>'s name,
  1326.   that will be shown to those in the room that the object has
  1327.   left via @teleport.
  1328. & @password
  1329.   @password <old password>=<new password>. This changes your 
  1330.   password.  It can be abbreviated @pass.
  1331. & @payment
  1332.   @payment <object> [=<message>]. The pay message is shown to the player
  1333.   who paid the object. Without a message argument, it clears the message.
  1334.   <player> can be specified as <name> or  #<number>, or as 'me' or 'here'.
  1335.   May be abbreviated @pay. See also @apay, @opay, and @cost.
  1336. & @pemit
  1337.   @pemit[/<switch>] <object> = <message>
  1338.   
  1339.   The basic form of this command sends <message> to <object> directly.
  1340.   It is very similar in its effects to @emit except only one object
  1341.   will see the message. You may @pemit to objects in the same room,
  1342.   objects you are carrying, and to objects that are carrying you, 
  1343.   or @pemit remotely, using #<object> or *<player name>.
  1344.   
  1345.   The @pemit command can also take the following switches:
  1346.     /contents  -- equivalent to @remit.
  1347.     /silent    -- does not tell the @pemit'ing object a confirmation message.
  1348.   
  1349.   See also @emit, @oemit, @remit, NOSPOOF, and SPOOFING.
  1350. & pose
  1351.   pose <action pose>. Displays your name followed by the statement 
  1352.   you posed.  May be abbreviated by the ':' symbol. Example:
  1353.   If you are player Bob, and you type in ':laughs out loud' 
  1354.   everybody in the room will see: "Bob laughs out loud"
  1355.   The "pose" command is obsolete and has been completely replaced by ':'
  1356. & @runout 
  1357.   @runout <object> = <actions> This is an action to be taken when 
  1358.   charges reach zero (See '@charges'). Actions are lists of commands 
  1359.   separated by semi-colons, and these commands are executed by the 
  1360.   object (see puppet). Things can execute almost any command but
  1361.   rooms and exits are restricted to forcing puppets to do things. 
  1362.   Gender substitutions are applied to the commands before they are 
  1363.   executed, this allows use of the players name who caused the 
  1364.   action. 
  1365. & @search
  1366.   @search [<player>] [<class>=<restriction>] [,<begin>,<end>]
  1367.   
  1368.   This command searches the database and lists objects which meet user 
  1369.   specified search criteria.  You can limit the scope of the search by
  1370.   specifying <begin> and <end> as the first and last dbrefs to search.
  1371.   
  1372.   If a <player> argument is supplied, only objects owned by that player 
  1373.   will be listed. If a <class> argument is supplied only objects of a
  1374.   certain class will  be listed. Possible <class>es include TYPE, NAME,
  1375.   ZONE, PARENT, EXITS, OBJECTS, ROOMS, PLAYERS, FLAGS, POWERS, and EVAL.
  1376.   If <class>=TYPE, possible <restriction>s include OBJECTS, ROOMS,
  1377.   EXITS, PLAYERS.
  1378.   
  1379.   If <class>=NAME, only objects whose name begin with the string <restriction> 
  1380.   will be listed. If <class>=ZONE, only objects in the zone <restriction>
  1381.   will be listed. If <class>=PARENT, only children of parent <restriction>
  1382.   will be listed. For ZONE and PARENT, <restriction> must be specified as a
  1383.   dbref number. 
  1384.   
  1385.   'help @search2' for more.
  1386. & @search2
  1387.   If <class>=EXITS, OBJECTS, ROOMS, or PLAYERS, only objects of that type 
  1388.   and whose  name begin with the string <restriction> will be listed. 
  1389.   
  1390.   If <class>=FLAGS, only  objects with the list of flags specified by
  1391.   <restriction> will be listed. Flag names should be specified by single
  1392.   letters. Flag names are case-sensitive.
  1393.   
  1394.   If <class>=POWERS, only objects with the given power are listed. Only
  1395.   one power may be specified.
  1396.   
  1397.   If <class>=EVAL, only objects for which <restriction> evaluates to 1
  1398.   will be listed. The token '##' in <restriction>, which is a function,
  1399.   is replaced by each dbref sequentially.
  1400.   
  1401.   See "help @search3" for more.
  1402.   
  1403. & @search3
  1404.   For the class TYPE=PLAYER, and for  PLAYER=<player-name>, anyone may 
  1405.   obtain information on any player.  In all other cases, only wizards may 
  1406.   obtain information about other players. This is computationally
  1407.   expensive, costing 100 pennies. It is generally faster than @find.
  1408.   
  1409.   Examples:
  1410.     @search flags=Wc      <-- search for connected wizards.
  1411.     @search type=rooms    <-- list all rooms owned by me.
  1412.     @search zone=#50      <-- list all objects belong to zone #50.
  1413.     @search Joe,100,200   <-- list all objects from #100-#200 owned by Joe.
  1414.   
  1415.     @search eval=gt(money(##,10)     <-- list all objects owned by me
  1416.                                          worth more than 10 coins.
  1417.      
  1418. & @set
  1419.   @set <object>=[!]<flag>
  1420.   @<pre-defined attribute> <object>=<value>
  1421.   @set <object>=<attribute>:<value>
  1422.   @set <object>=<new>:_<thing>/<old>
  1423.   @set <object>/<attribute>=[!]<atrflag>
  1424.   
  1425.   The first form sets (or unsets) a flag on <object>.
  1426.   The second form sets a pre-defined attribute (such as MOVE, FAIL, etc.)
  1427.   on <object>.
  1428.   The third form sets an arbitrary attribute with <value> on <object>.
  1429.   
  1430.   The fourth form is used for copying attributes. It sets an attribute
  1431.   <new> on <object> with the contents of <thing>'s <old> attribute.
  1432.   (For example: @set me=TEST1:_fluff/fail  would copy the contents of
  1433.   the object "fluff"'s FAIL attribute into an attribute called TEST1 on me)
  1434.  
  1435.   See "help @set2" for more.
  1436.  
  1437. & @set2
  1438.   The fifth form sets (or unsets) an attribute flag on the specified
  1439.   attribute. Possible flags are:
  1440.  
  1441.   no_command        Attribute will not be checked for '$' commands and
  1442.                     '^' listen patterns. In an 'examine', this is denoted
  1443.                     by '$' next to the dbref of the attribute's owner.
  1444.   visual            Attribute can be seen by anyone via get(), eval(),
  1445.                     ufun(), zfun(), and similar functions. In 'examine',
  1446.                     this is denoted by 'v'.
  1447.   no_inherit        Attribute will not be inherited by the children of
  1448.                     this object. In 'examine', this is denoed by 'i'.
  1449.   no_clone          Attribute will not be copied if the object is @clone'd.
  1450.                     In 'examine', this is denoted by 'c'.
  1451.   mortal_dark       Attribute cannot be seen by mortals. Denoted by 'm'.
  1452.                     This flag can only be set by royalty and wizards.
  1453.   wizard            Attribute can only be set by wizards. Denoted by 'w'.
  1454.                     This flag can only be set by royalty and wizards.
  1455.   
  1456.   See also FLAGS, NON-STANDARD ATTRIBUTES.
  1457. & @sex
  1458.   @sex <player> = <gender>  Used for pronoun substitution, normally 
  1459.   male or female. Visible to all. Examples:
  1460.   @sex me = Male
  1461.   @sex me = No thank you (silly, but possible)
  1462. & @shutdown
  1463.   @shutdown. Only wizards may use this command. Shuts down the game. 
  1464.   Must be typed in full.
  1465. & @startup
  1466.   @startup <object> = <action list>. This is an action list that gets 
  1467.   triggered the first time the mud comes up.  If the mud crashes, 
  1468.   this list will be triggered when the mud comes back up.  Thus, you 
  1469.   can retrigger objects that need to be running continuously.
  1470.   Setting or resetting this attribute automatically sets or
  1471.   resets the STARTUP (z) flag.
  1472. & @stats
  1473.   @stats. Display the number of objects in the game broken down by 
  1474.   object types.  Wizards can supply a player name to count only 
  1475.   objects owned by that player.
  1476. & @success
  1477.   @success <object> [=<message>]. Sets the success message for 
  1478.   <object>. The message is displayed when a player successfully uses 
  1479.   <object>. Without a message argument, it clears the message. It 
  1480.   can be abbreviated @succ. <object> can be specified as <name> or 
  1481.   #<dbref>, or as 'me' or 'here'. See also @osuccess and @asuccess. 
  1482. & @use
  1483.   @use <object> [=<message>]. Sets the use message for <object>. The
  1484.   message is displayed when a player successfully does a "use" on the
  1485.   object. Without a message argument, it clears the message.
  1486. & @teleport
  1487.   @teleport [<object>=] <room>. Teleports <object> to <room>. 
  1488.     
  1489.   <object> must be a thing; if you do not supply a thing, the object 
  1490.   is assumed to be yourself. The destination must be either JUMP_OK
  1491.   or controlled by you, and you must either control <object> or
  1492.   <object>'s current location. Also, the destination, if a room,
  1493.   cannot be teleport-locked against <object>. Mortals cannot teleport 
  1494.   Royalty or Wizards. If the target room has a drop-to, <object> will go 
  1495.   to the drop-to room instead. Wizards can teleport things into players'
  1496.   inventories.
  1497.   
  1498.   Teleportation from a room can be stopped by setting the NO_TEL flag.
  1499.   Royalty and Wizards can _always_ teleport to any location, regardless
  1500.   of NO_TEL or teleport locks.
  1501.   
  1502.   Teleportation triggers the @oxtport/@tport/@otport/@atport attributes,
  1503.   unless <room> is an exit.
  1504.   
  1505.   See also: JUMP_OK, NO_TEL, @oxtport, @tport, @otport, @atport, @elock
  1506. & @unlink
  1507.   @unlink <dir>; @unlink here. Removes the link on the exit in the 
  1508.   specified direction, or removes the drop-to on the room. Unlinked 
  1509.   exits may be picked up and dropped elsewhere. Be careful, anyone 
  1510.   can relink an unlinked exit, becoming its new owner (but you will 
  1511.   be reimbursed your 1 penny). See @link.
  1512. & @unlock
  1513.   @unlock [/<switch>] <object>. Removes the lock on <object>. See @lock.
  1514.   It can take four switches: /enter, /tport, /use, and /page.
  1515.   The first two are equivalent to @eunlock, and the latter two are
  1516.   equivalent to @uunlock.
  1517. & @wall
  1518.   @wall [/<switch>] <message>. Only wizards may use this command. 
  1519.   In its default form, this command allows the player to shout
  1520.   a message to every player connected. It must be typed in full.
  1521.   It can also take the following switches:
  1522.   /wizard  : broadcast to wizards (like @wizwall)
  1523.   /royalty : broadcast to wizards and royalty (like @rwall)
  1524.   /pose    : pose a message to all (like @wallpose)
  1525.   /emit    : emit a message to all (like @wallemit)
  1526. & @rwall
  1527.   @rwall <message>
  1528.   Only wizards and royalty may use this command. It broadcasts a message to
  1529.   all connected wizards and royals, prefixed with "Admin:". If the first
  1530.   character is : or ; it does the same thing as @wizpose.
  1531. & @rwallpose
  1532.   @rwallpose <pose>
  1533.   Only wizards and royalty may use this command. It's a variant of @rwall,
  1534.   using a pose, and is identical to "@rwall :<pose>"
  1535. & @rwallemit
  1536.   @rwallemit <message>
  1537.   Only wizards and royalty may use this command. It is similar to @wizemit,
  1538.   but broadcasts the message to all connected wizards and royals.
  1539. & @wizwall
  1540.   @wizwall <message>.  Only wizards may use this command.  
  1541.   Shouts <message> to all wizards logged in.  If the first character is
  1542.   a : or ; it does the same thing as @wizpose. (; doesn't attach the space)
  1543. & @wizpose
  1544.   @wizpose <message>.  Only wizards may use this command.
  1545.   Shows the <message> to all wizards logged on in pose format.
  1546. & @wizemit
  1547.   @wizemit <message>.  Only wizards may use this command.
  1548.   Shows <message> to all wizards logged on in emit format.
  1549. & @whereis
  1550.   @whereis <player>. Tells you the location of the player. If you 
  1551.   wish to remain unlocatable, set your UNFINDABLE flag. (See FLAGS). 
  1552.   The person being located will get a message to inform them that you
  1553.   have successfully or unsuccessfully located them.  
  1554.   Ex: @whereis  Moonchilde
  1555. & ATTRIBUTES
  1556.   ATTRIBUTES
  1557.  
  1558.   The following standard attributes can be set on your character.
  1559.   These attributes are set by typing @<attribute> <object> = <value>.
  1560.   Typing help on the @-command associated with each attribute will get
  1561.   you help on that attribute.  Attributes with (*) after them are special,
  1562.   and a) cannot be set by players and b) are possibly only visible to
  1563.   wizards. There is a section also on NON-STANDARD ATTRIBUTES.
  1564.  
  1565.   AAHEAR        ACLONE        ACONNECT      ADEATH        ADESCRIBE
  1566.   ADISCONNECT   ADROP         AEFAIL        AENTER        AFAILURE
  1567.   AHEAR         ALEAVE        AMHEAR        AMOVE         APAYMENT
  1568.   ASUCCESS      AWAY          CHARGES       COST          DEATH
  1569.   DESCRIBE      DOES          DROP          EALIAS        EFAIL
  1570.   ENTER         FAILURE       HAVEN         IDESCRIBE     IDLE
  1571.   LALIAS        LAST (*)      LASTSITE (*)  LEAVE         LISTEN
  1572.   MOVE          ODEATH        ODESCRIBE     ODROP         OEFAIL
  1573.   OENTER        OFAILURE      OLEAVE        OMOVE         OPAYMENT
  1574.   OSUCCESS      OXENTER       OXLEAVE       PAYMENT       PASSWORD (*)
  1575.   QUEUE (*)     RQUOTA (*)    RUNOUT        SEX           STARTUP
  1576.   SUCCESS
  1577.  
  1578.   Those with a (*) above have a separate help section for each of them
  1579.   so that you can find out what each attribute controls.
  1580.   Any attribute name can be shortened, but at shorter forms run the risk
  1581.   of conflicting with other attribute names.  This could result in you
  1582.   setting an unwanted attribute.
  1583. & LAST
  1584.   LAST
  1585.  
  1586.   This attribute shows the last time you connected to the MUSH. It is
  1587.   only visible to objects that control you (wizards, you or your objects)
  1588.   or if you set yourself VISUAL.
  1589. & PASSWORD
  1590.   PASSWORD
  1591.  
  1592.   This attribute stores your encrypted password.  It is not visible to
  1593.   anyone within the game, and cannot be altered except via the @password
  1594.   and @newpassword commands.
  1595. & QUEUE
  1596.   QUEUE
  1597.  
  1598.   This attribute is only visible to objects that control you (wizards, 
  1599.   yourself, and your objects) or unless you are VISUAL.  It tracks how
  1600.   many active commands you have in the queue.
  1601. & RQUOTA
  1602.   RQUOTA
  1603.  
  1604.   This attribute tracks building quota if it is implemented.  It is
  1605.   settable in-game only by a wizard, and is only visible to wizards.
  1606. & NON-STANDARD ATTRIBUTES
  1607.   NON-STANDARD ATTRIBUTES
  1608.   Objects now have the capability of having an unlimited number of
  1609.   attributes.  These attributes can have any name.  In order to preserve
  1610.   backward compatibility, the VA-VZ, WA-WZ, and XA-XZ attributes still
  1611.   exist in their previous form, and are set like a normal attribute.
  1612.   To set a new style attribute, you use the form
  1613.       &<attribute name> <obj> = <value>  OR
  1614.       @_<attribute_name> <obj> = <value> OR
  1615.       @set <obj> = <attribute_name>:<value>
  1616.   All attributes have the ability to be used in attribute locks (see help 
  1617.   @lock).  Attributes also have the new ability to be 'owned' independent
  1618.   of object ownership (see help ATTRIB-OWNERSHIP).  All attributes
  1619.   can be addressed in get() as well as in edit, and %-substitute form,
  1620.   as well as accessed via the V-function.
  1621. & ATTRIB-OWNERSHIP
  1622.   ATTRIBUTE OWNERSHIP
  1623.   The first person to create an attribute on an object is said to 'own'
  1624.   that attribute.  You must control the object in order to create an
  1625.   attribute on it.  ***OWNERSHIP OF ATTRIBUTES IS NOT CHANGED WHEN AN
  1626.   OBJECT IS @CHOWNED***  This allows for 'locks' which cannot be faked
  1627.   as the person who controls the lock and the person who controls the
  1628.   attribute MUST be the same for the lock to succeed.  It is also
  1629.   possible to 'freeze' or 'lock' an attribute so that new owners of the
  1630.   object can not tamper with it.  This allows 'standard' commands on
  1631.   objects and other neat stuff.  Attribute locking is controlled by the
  1632.   new command @atrlock and attribute ownership can be changed via the 
  1633.   @atrchown command.
  1634. & BEING KILLED
  1635.   BEING KILLED  
  1636.  
  1637.   Getting killed is no big deal. If you are killed, you return to
  1638.   your home, and  all things you carry return to their homes. You 
  1639.   also collect 50 pennies in insurance money (unless you have >= 10000 
  1640.   pennies or you were killed via the Wizard slay command). See MONEY.  
  1641.   Generally, killing is not encouraged unless absolutely necessary.
  1642.   (Note: Killing a wizard is a quick way to discover the many uses of
  1643.   the @boot command...  and killing anyone can be very rude.)
  1644. & BOGUS COMMANDS
  1645.   BOGUS COMMANDS    
  1646.   
  1647.   Bogus commands can be made using exits. For example, to
  1648.   make a 'sit' command,  one could "@open sit", then "@link sit=here"
  1649.   (because unlinked exits can be  stolen), "@lock sit=me&!me" 
  1650.   (impossible to be both at once, therefore always fails), and "@fail
  1651.   sit=You sit on the chair."; "@ofail sit=sits on the chair.".  Since
  1652.   nobody can go through it, it always fails. The @fail message is 
  1653.   displayed  to the player, and the @ofail message (preceded by the 
  1654.   player's name) to  everyone else.
  1655.  
  1656.   A better way to do user-defined commands is to use $comands on objects.
  1657.   These are set using &<attrib> <object>=$<command pattern>:<actions>
  1658.   If something a user types matches the command pattern, the actions are
  1659.   executed. In order to execute a $command, you must pass the object's
  1660.   uselock. Otherwise, you will get a "Permission denied." message.  
  1661.  
  1662. & CONTROL
  1663.   CONTROL      
  1664.  
  1665.   There are 3 rules to controlling objects:
  1666.    1) You control anything you own.
  1667.    2) A wizard controls everything.
  1668.    3) Anybody controls an unlinked exit, even if it is locked.
  1669.  
  1670.   Builders should beware of 3, lest their exits be linked or stolen.
  1671. & COSTS
  1672.   COSTS
  1673.   
  1674.   These are usually:
  1675.   
  1676.           kill: 10 pennies (or more, up to 100 pennies)
  1677.           page: 1 penny
  1678.           @dig: 10 pennies
  1679.           @create: 10 pennies (or  more, up to 505M),
  1680.               (sacrifice value=(cost/5)-1.)
  1681.           @find: 100 pennies
  1682.           @search: 100 pennies
  1683.           @entrances: 100 pennies
  1684.           @link: 1 penny (if you  didn't already own it,
  1685.                           +1 to the previous owner).
  1686.           @open: 1 penny (2 pennies if linked at  the same time)
  1687.   
  1688.   Type '@config' to get the costs for the particular MUSH you are on.
  1689. & DROP-TO
  1690.   DROP-TO
  1691.   When the @link command is used on a room, it sets a drop-to
  1692.   location.  Any object dropped in the room (if it isn't STICKY) will
  1693.   go to that location.  If the room is STICKY, the drop-to will be
  1694.   delayed until the last person in the room has left.
  1695. & EXITS
  1696.   EXITS
  1697.   An exit links one room to another room.  If an exit is set DARK it will
  1698.   not show up in the list of obvious exits in a room.
  1699. & FAILURE
  1700.   FAILURE  
  1701.  
  1702.   You fail to use a thing when you cannot take it (because its lock
  1703.   fails). You  fail to use an exit when you cannot go through it
  1704.   (because it's unlinked or  locked). You fail to use a person when
  1705.   you fail to rob them, but you can't rob in a mush. You fail to use
  1706.   a room when you fail to look  around (because it's locked).
  1707.   See ATTRIBUTES, @fail and @ofail.
  1708. & FLAGS
  1709.   FLAGS
  1710.   @set <object> = <Flags> to set, @set <object> = !<Flag> to
  1711.   reset.  Everything in the universe of this MUSH (Rooms, Exits,
  1712.   Objects, Players, etc...) are represented in the same way at the
  1713.   program level.  A room merely has the room flags set and a player
  1714.   has the player flags set.  In addition, flags also give objects
  1715.   abilities or qualities.  For instance, a wizard has the wizard flag
  1716.   set. That is what lets the program know he may use wizard
  1717.   abilities.  An object or room may have the dark flag set. In the
  1718.   case of an object, this makes the object invisible to normal
  1719.   eye-sight.  In the case of a room, the room becomes too dark to see
  1720.   other objects or players.
  1721.   For more specific information on a particular flag, request help on
  1722.   a flag title. Example: help ENTER_OK
  1723.  
  1724.   To get the list of flags, do "help flag list"
  1725.  
  1726. & FLAG LIST
  1727. Flag  Title           Flag  Title              Flag  Title
  1728. -----------------------------------------------------------------------
  1729.   A - Abode, Ansi    C - Chown_Ok        D - Dark
  1730.   E - Exit (type)    F - Floating        G - Going
  1731.   H - Haven        I - Inherit        J - Jump_Ok
  1732.   L - Link_Ok        M - Monitor        N - Nospoof, No_Tel
  1733.   O - Opaque        P - Player (type)    Q - Quiet
  1734.   R - Room (type)    S - Sticky        T - Temple
  1735.   U - Unfindable    V - Visual        W - Wizard
  1736.   X - Safe              Z - Zone
  1737.   
  1738.   a - Audible        b - Debug        c - Connected
  1739.   d - Destroy_Ok    e - Enter_Ok        g - Gagged
  1740.   h - Halt        l - Listener        m - Myopic
  1741.   n - No_Command    p - Puppet        r - Royalty
  1742.   t - Transparent    u - Suspect        v - Verbose
  1743.   x - Terse        z - Startup  
  1744. ---------------------------------------------------------------------
  1745.  
  1746. & DEBUG
  1747.   Flag: DEBUG  (all types)
  1748.   
  1749.   The DEBUG flag is used for debugging MUSHcode. It is meant to be used
  1750.   in conjunction with the VERBOSE flag. If an object is set DEBUG, all
  1751.   parser evaluation results will be shown to the object's owner, in the
  1752.   format: #<object dbref>! <string to evaluate> => <evaluated string>
  1753.   Note that verbose output is "#obj]" - debug output is "#obj!".
  1754.   
  1755.   Because the parser does recursive evaluations, you will see successive
  1756.   messages evaluating specific parts of an expression. This enables you
  1757.   to pinpoint exactly which evaluation is going wrong.
  1758.   
  1759.   Objects run under this flag are quite computationally expensive. Thus,
  1760.   only wizards and royalty may set it, although they can set it on objects
  1761.   they do not own (provided they control those objects).
  1762.   
  1763.   During a DEBUG evaluation, the flag is temporarily reset; therefore,
  1764.   a test for HASFLAG(), FLAGS(), etc. in the debug execution will show
  1765.   that the DEBUG flag is not set (although the actual output will be
  1766.   correct.)
  1767.   
  1768.   See "help DEBUG2" for more.
  1769. & DEBUG2
  1770.   
  1771.   Create test, and set it DEBUG.
  1772.   
  1773.   > @va test=$wc *:"String %0 has [strlen(%0)] letters and [words(%0)] words.
  1774.   > test This is my test string
  1775.   #14! String %0 has [strlen(%0)] letters and [words(%0)] words. => String
  1776.        This is my test string has 22 letters and 5 words.
  1777.   #14! strlen(%0) => 22
  1778.   #14! %0 => This is my test string
  1779.   #14! words(%0) => 5
  1780.   #14! %0 => This is my test string
  1781.   Test says, "String This is my test string has 22 letters and 5 words."
  1782.   
  1783. & NO_COMMAND
  1784.   Flag:  NO_COMMAND  (all types)
  1785.   
  1786.   The NO_COMMAND flag disables the checking of $-commands on an object.
  1787.   Most MUSHes will be configured to automatically set this flag on rooms
  1788.   and players. The server runs faster when fewer objects are checked for
  1789.   $-commands; thus, any object which does not have $-commands on it should
  1790.   be set NO_COMMAND.
  1791. & ANSI
  1792.   Flag:  ANSI  (players)
  1793.   
  1794.   When set on a player, this flag bold-hilites the names and owners
  1795.   of attributes when the player "examines" an object. This makes it
  1796.   much easier to pick out where attributes begin and end, when examining
  1797.   complex objects. You must be using a terminal which supports ANSI
  1798.   control codes in order for this to work. 
  1799. & MONITOR
  1800.   Flag:  MONITOR  (players)
  1801.   
  1802.   When set on a player, this flag notifies that player when anyone
  1803.   connects to or disconnects from the MUSH. It is valid only for players,
  1804.   and must be set by a wizard (although royalty may set themselves MONITOR).
  1805. & AUDIBLE
  1806.   Exits that are AUDIBLE propagate sound to their destinations. In
  1807.   other words, any message - emit, say, or pose - that is heard in the
  1808.   source room of the exit is passed on to the contents of the exit's
  1809.   destination room. The message is prepended with the exit's @prefix
  1810.   attribute; if there is no @prefix, the default is used:
  1811.   
  1812.   "From <name of the exit's source room>,"
  1813.   
  1814.   Messages matching a certain pattern may be filtered out by using
  1815.   @filter on an exit; read 'help @filter' for more.
  1816.   
  1817.   In order for exits in a room to propagate sound, the room must also
  1818.   be set AUDIBLE. If the room is audible, exits that are audible show 
  1819.   up on a @sweep, even if they are set DARK.
  1820.    
  1821.   See "help AUDIBLE2" for more.
  1822.  
  1823. & AUDIBLE2
  1824.   This flag is also valid for things. If an object is set AUDIBLE,
  1825.   any messages which originate from its contents will be broadcasted
  1826.   to the outside world. This makes it very simple to program vehicles.
  1827.   Like AUDIBLE on exits, the message is prepended with the thing's
  1828.   @prefix attribute, and messages matching certain patterns may be
  1829.   filtered with @filter. If there is no @prefix, the message will be
  1830.   prepended with "From <name of AUDIBLE object>,"
  1831.   The AUDIBLE object does not receive its own propagated messages.
  1832.  
  1833.   The AUDIBLE flag allows most "emitters" (objects that listen for
  1834.   messages and broadcast them to other rooms) to be eliminated. The
  1835.   message is propagated only to the next room and no farther, so 
  1836.   there is no danger of looping.
  1837. & LISTENER
  1838.   LISTENER
  1839.   When set on a thing, this flag activates the ^ listen patterns on
  1840.   the object. Objects which have ^ listen patterns but are not set
  1841.   LISTENER do not check those patterns, although they are flagged
  1842.   on a @sweep as listening.
  1843. & STARTUP
  1844.   STARTUP
  1845.   This flag is automatically set or reset when you set or clear the
  1846.   STARTUP attribute on something. Players may not set this flag.
  1847.   The presence of this flag just shows that an object has a STARTUP
  1848.   attribute on it.
  1849. & MYOPIC
  1850.   MYOPIC
  1851.   Myopic is a flag which suppresses the printing of an object's dbref
  1852.   number and abbreviated list of flags when it is looked at. It makes
  1853.   the world appear like you don't control any of it, even if you're a
  1854.   wizard or royalty. It's useful if you don't like to see object numbers.
  1855.   This flag is only valid for players; objects belonging to MYOPIC
  1856.   players are automatically considered to be MYOPIC.
  1857.  
  1858. & INHERIT
  1859.   INHERIT
  1860.   Inherit is a security flag used to prevent objects without authorization
  1861.   from using @force, @set, and @trigger on other objects.
  1862.   Authorization is successful if:
  1863.  
  1864.      1. The enactor is WIZARD.
  1865.      2. The enactor's owner is INHERIT.
  1866.      2. The enactor is INHERIT.
  1867.      3. The target is not INHERIT.
  1868.  
  1869.   Only INHERIT or WIZARD objects may force their owners. Players can
  1870.   always @force, @set, and @trigger their objects. 
  1871.  
  1872.   Read "help Inherit2" for more.
  1873.  
  1874. & INHERIT2
  1875.  
  1876.   Authorization is only denied if the enactor is neither a player nor
  1877.   INHERIT, and the target is WIZARD, INHERIT, or is a player.
  1878.   The INHERIT protection against @trigger may be overridden by setting
  1879.   the target object LINK_OK.
  1880.   Objects which are WIZARD are not subject to any special criterion,
  1881.   although they are automatically considered to be INHERIT.
  1882.   The normal criteria for object control still apply.
  1883.  
  1884.   For zoned objects, the INHERIT flag protects against an object from
  1885.   being controlled by anything not owned by its owner. This prevents
  1886.   someone who controls a zone from doing things like @forcing an
  1887.   INHERIT object to @force its owner.
  1888.   
  1889. & VERBOSE
  1890.   VERBOSE
  1891.   An object set VERBOSE echoes the commands it executes to its owner
  1892.   before executing them. This differs from the PUPPET flag in that the
  1893.   owner sees the command itself, rather than the output from the command.
  1894.   This flag is extremely useful in debugging, especially if used in
  1895.   conjunction with the PUPPET flag. VERBOSE output follows the format
  1896.   "#<object>] <command>". Something like "#1300] @trigger me/va" is a
  1897.   good example of typical VERBOSE output.
  1898.  
  1899. & TERSE
  1900.   TERSE
  1901.   When an object is set TERSE, it does not see the descriptions or
  1902.   success/failure messages in rooms. This is a useful flag if you're
  1903.   on a slow connection or you're moving through a familiar area and
  1904.   don't want to see tons of text. This flag is only valid for players;
  1905.   objects belonging to TERSE players are automatically considered to
  1906.   be TERSE.
  1907.  
  1908. & SUSPECT
  1909.   SUSPECT
  1910.   This flag is only settable by wizards. Players with this flag have
  1911.   their connects, disconnects, name changes, and kills reported to
  1912.   all connected wizards.
  1913. & SAFE
  1914.   SAFE
  1915.   This flag, when set on an object, prevents the object from being
  1916.   destroyed via the @destroy command. The "@nuke" command must be
  1917.   used to recycle the object. Valuable objects should be protected
  1918.   by this flag.
  1919. & NO_TEL
  1920.   NO_TEL
  1921.   The NO_TEL command prevents objects in a room from being @teleported;
  1922.   mortals in the room cannot use @teleport, nor can other objects 
  1923.   @teleport them out. This flag is checked on the "absolute room" of an
  1924.   object; thus, if you are in a container in a room which is NO_TEL,
  1925.   you cannot use @teleport from that container. There is no way to
  1926.   get out of a NO_TEL room except by exiting in some "normal" manner,
  1927.   or by going "home". Puzzle rooms, prisons, and similar locations would
  1928.   probably benefit from this flag.
  1929. & ROYALTY
  1930.   ROYALTY
  1931.   If this flag is set on any type of object, then that object will
  1932.   be able to @tel and examine as if it was a wizard. Royalty players
  1933.   do not need money, nor are they affected by quotas or restricted
  1934.   building. Royalty is not able to change things like a wizard could. 
  1935.   Only wizards may set it on players, although players who are ROYALTY
  1936.   may set their objects ROYALTY.
  1937. & TRANSPARENT
  1938.   TRANSPARENT
  1939.   If this flag is set on an exit, when a player looks at the exit they
  1940.   will see the description and contents of the destination room following
  1941.   the exit's description.  The exit list and succ/fail messages of the
  1942.   room will NOT be displayed.
  1943.   If this flag is set on a room, it will display exits in "long" format.
  1944.   Instead of putting all the exits on one line under "Obvious exits:"
  1945.   it prints each exit on a line by itself, in the format:
  1946.   <Exit Name> leads to <Exit Destination>.
  1947.   Thus, you might have:
  1948.      Obvious exits:
  1949.      South leads to Joe's Room.
  1950.      East leads to City Park.
  1951.   instead of
  1952.      Obvious exits:
  1953.      South  East
  1954. & ABODE
  1955.   ABODE  If a room is set ABODE, any player can set his home there,
  1956.   and can set the homes of objects there.  It does not mean that a
  1957.   player can open an exit to that room, only that they can set their
  1958.   home there.  This flag should not be set unless you want to make the
  1959.   room a public 'living area'.
  1960. & CHOWN_OK
  1961.   CHOWN_OK  This flag, when set, allows you to transfer ownership to
  1962.   another player. To set it, you must be carrying the object. You 
  1963.   also have to be in the room if you want to set this flag on rooms 
  1964.   or exits.  After this flag is set, the new player may gain 
  1965.   ownership of the object by using the @chown command (See @chown).
  1966. & CONNECTED
  1967.   CONNECTED  This flag applies only to players and it shows if the 
  1968.   player is connected or not. Thus, each time you are connected to 
  1969.   the game, you should see the 'c' flag set, otherwise, you are DEAD!
  1970.   You cannot reset this flag, and it is used internally by the code 
  1971.   for things like tabulating players for the WHO list, etc.
  1972. & DARK
  1973.   DARK      If a room is DARK, then no items are shown when a person 
  1974.   'looks' there. If a thing is DARK, then "look" does not list that 
  1975.   object in the room's Contents:, and if an exit is DARK, it doesn't 
  1976.   show up in the Obvious Exits: list.  Puppets and objects that can 
  1977.   listen cannot be DARK.  
  1978.   
  1979.   There is a config option for "full invisibility": players and objects
  1980.   that are dark will be slightly disguised in speech and poses.  Such
  1981.   actions by these objects will show as being from Someone or Something
  1982.   depending on whether it was an object or wizard player.
  1983.   
  1984.   See 'help DARK2' for more.
  1985.   
  1986. & DARK2
  1987.   Royalty and wizards can set themselves DARK to hide from the WHO list
  1988.   and related functions. DARK on royalty is not a "true" dark -- the
  1989.   player still appears in the room contents list, still has a connect
  1990.   and disconnect message, and, for all purposes, is just as visible as
  1991.   any normal player, except for the fact that the DARK royal does not
  1992.   appear on the WHO.
  1993.   
  1994.   Wizards who are DARK "disappear" completely -- they are not on the WHO
  1995.   list, do not announce connects and disconnects, etc.
  1996. & DESTROY_OK
  1997.   DESTROY_OK   When set on an object, it allows any player to destroy
  1998.   it as long as the object is not locked against them. This is good 
  1999.   for things like notes, whereby the recipient can destroy the note 
  2000.   after reading it, instead of having to look for you to destroy it.
  2001. & ENTER_OK
  2002.   ENTER_OK   If an object or person is ENTER_OK, other players may 
  2003.   enter the object or person by using 'enter <object/person>.
  2004.   Only objects which are ENTER_OK may be entered, regardless of the
  2005.   enter lock. Players must also have the ENTER_OK set if they wish to
  2006.   be able to receive  things given to them by other players via the 
  2007.   'give <player> = <object>'.  
  2008. & GENDER
  2009.   GENDER    @set me=sex:<unassigned|male|female|neuter>. Default 
  2010.   unassigned. If a player's gender is set, %-substitutions will use 
  2011.   the appropriate pronoun for that player. Only  meaningful for 
  2012.   players. 
  2013.   See SUBSTITUTIONS.  
  2014. & GOING
  2015.   GOING     Used internally for the @destroy command, it is set on 
  2016.   rooms that are set to be destroyed. In the event that a player 
  2017.   decides they don't want to destroy the room after all then they can
  2018.   unset it.  
  2019. & HAVEN
  2020.   HAVEN     @set here=haven;@set me=haven. If a room is HAVEN, you 
  2021.   cannot kill in that room. If a player is set HAVEN, he cannot be 
  2022.   paged.  Bummer.
  2023. & LINK_OK
  2024.   LINK_OK   If a something is LINK_OK, anyone can link exits to it (but 
  2025.   still not from it). Also, LINK_OK overrides the INHERIT protection
  2026.   against @trigger (although not @force or @set).
  2027.   See @link, INHERIT.
  2028. & UNFINDABLE
  2029.   UNFINDABLE
  2030.   
  2031.   If a player is set UNFINDABLE, he cannot be found by the @whereis 
  2032.   command. You also cannot use loc(), locate(), and similar functions
  2033.   to find his location.
  2034.   
  2035.   If a room is set UNFINDABLE, you cannot locate any of its contents
  2036.   via any means (@whereis, the loc() function, etc.)
  2037.   
  2038.   If a wizard is set UNFINDABLE, and he is idle past the allowable 
  2039.   maximum idle time, he will be set DARK automatically.
  2040. & FLOATING
  2041.   If a room is set floating, you will not be notified every 10 
  2042.   minutes or so that you have a disconnected room.
  2043. & OPAQUE
  2044.   OPAQUE   When set on a player, it prevents other players from 
  2045.   seeing what you are carrying in your inventory. This applies to
  2046.   everyone and everything, even wizards and royalty, or to stuff
  2047.   that you own.
  2048. & PLAYER
  2049.   PLAYER The PLAYER flag identifies you as a player. This flag cannot
  2050.   be reset by any player, not even a Wizard (not, yet, anyway 
  2051.   *grin*).  It is used mainly by the mush code to identify your 
  2052.   commands, check for validity of commands or locks etc. Generally, 
  2053.   just pretend it isn't even there.
  2054. & JUMP_OK
  2055.   When a room is set JUMP_OK, then that room can be teleported into
  2056.   by anyone. See @teleport.
  2057. & PUPPET
  2058.   PUPPET   @set <object> = puppet. Causes an object to grow eyes and 
  2059.   ears, and relay all it sees and hears to its owner.  
  2060.   See: @force, PUPPETS
  2061. & ROOM
  2062.   ROOM   This flag is automatically set on rooms when you @dig a new
  2063.   room. It cannot be changed. Rooms have the added advantage that 
  2064.   they can be saved from destruction by setting the room to !GOING 
  2065.   (SEE GOING).
  2066.   However, this can only be done if no other room/object was created 
  2067.   that overwrote your room when it was set for destruction.
  2068. & VISUAL 
  2069.   VISUAL The flag a lot of players have been waiting for. When set on
  2070.   your object, it allows other players to examine it and see all the
  2071.   object's attributes as if they owned the object. They cannot make 
  2072.   any changes to the object.
  2073. & QUIET
  2074.   QUIET     This flag when set on yourself prevents you from hearing 
  2075.   the 'set' or 'triggered' messages from any objects you own.  When 
  2076.   set on an object, only that object will not relay its messages.
  2077. & HALT
  2078.   HALT    While this flag is set, the object cannot perform any mush 
  2079.   actions, listen, be triggered, etc.
  2080. & GAGGED
  2081.   GAGGED   When set on a player, it disables him from doing anything 
  2082.   except moving and looking.  He cannot talk, page, build, pose, get 
  2083.   or drop objects. (Yet another consequence of annoying the wizards.)
  2084.   Only wizards can set this flag.
  2085. & STICKY
  2086.   STICKY    If a thing is STICKY, it goes home when dropped (See HOMES).
  2087.   It also goes home when an object carrying it teleports or goes home.
  2088.   If a room is STICKY, its drop-to is delayed until the last person leaves 
  2089.   (See DROP-TOs). This flag is only meaningful for things and rooms.  
  2090. & TEMPLE
  2091.   TEMPLE  If a room is TEMPLE, you can sacrifice things for pennies by 
  2092.   dropping them there. It has no meaning for players, things, or 
  2093.   exits. Only wizards can set this flag.  
  2094. & BUILDER
  2095.   BUILDER If a player has the BUILDER flag set, it means that all the
  2096.   building commands will work for them.  Without it, you can only 
  2097.   explore the world but not add to it. This is only settable by 
  2098.   Wizards.
  2099. & WIZARD
  2100.   WIZARD    If a person is WIZARD, they are a wizard, unkillable, 
  2101.   subject to fewer restrictions, and able to use wizard commands.  
  2102.   In general, WIZARDs can do anything using #<number> or *<player>. 
  2103.   Only player #1 can set and unset the WIZARD flag of other players. 
  2104.   No WIZARD can turn their own WIZARD flag off.
  2105. & NOSPOOF
  2106.   NOSPOOF   If an object is set NOSPOOF, @emits, @oemits, @remits and
  2107.   @pemits will be distinctively tagged to help prevent spoofing. This
  2108.   flag is only valid for players; objects belonging to NOSPOOF players
  2109.   are automatically considered NOSPOOF. Beware: the output format of
  2110.   NOSPOOF can mess up @listen and ^ patterns, giving unexpected results.
  2111.   See SPOOFING, @emit, @pemit, @remit, and @oemit.
  2112. & LISTENING
  2113.   There are two ways to listen for something in a room. The easiest way
  2114.   is to use a combination of @listen and @ahear/@aahear/@amhear. The
  2115.   second way is to use a "^" pattern in an attribute, similar to the way
  2116.   "$" is used for user-defined commands. This takes the form of:
  2117.   &<attribute> <object> = ^<pattern>:<action>
  2118.   The criterion for triggering a pattern-listen is the same as that for
  2119.   triggering an @ahear - the object cannot trigger its own listen patterns.
  2120.   Listen patterns are checked after the object's normal @listen attribute.
  2121.   To activate the listen patterns, the LISTENER flag must be set on the
  2122.   object. Only things may have listen patterns.
  2123.   Example:
  2124.   > &TEST object = ^* screams.:"Hello, %0.
  2125.   Object - Set.
  2126.   > :screams.
  2127.   Amberyl screams.
  2128.   > Object says "Hello, Amberyl."
  2129.  
  2130. & HERE
  2131.   HERE    The word 'here' refers to the room you are in. For example,
  2132.   to rename the room  you're in (if you control it), you could enter 
  2133.   "@name here= <new name>". 
  2134. & HOMES
  2135.   HOMES    Every thing or player has a home. This is where things go 
  2136.   when sacrificed,  players when they go home, or things with the 
  2137.   STICKY flag set go when dropped  (See STICKY). Homes are set with 
  2138.   the @link command. A thing's home defaults to  the room where it 
  2139.   was created, if you control that room, or your home. You can link 
  2140.   an exit to send players home (with their inventory) by 
  2141.   "@link <dir>=home".  Drop-tos can also be set to 'home'. 
  2142.   See DROP-TO and @link.
  2143. & LINKING  
  2144.   LINKING  You can link to a room if you control it, or if it is set 
  2145.   LINK_OK or ABODE. Being able to link means you can set the homes of
  2146.   objects or yourself to that  room if it is set ABODE, and can set 
  2147.   the destination of exits to that room if it is LINK_OK.
  2148.   See LINK_OK, ABODE and @link.  
  2149. & ME
  2150.   ME   The word 'me' refers to yourself. Some things to do when 
  2151.   starting out: 
  2152.   1) give  yourself a description with 
  2153.   "@describe me=<description>", then look at yourself  with 
  2154.   "look me". 
  2155.   2) set your gender, if you wish it known, with "@set me=male" or 
  2156.   "@set me=female"  (or "@set me=neuter" to be an 'it').  
  2157. & MONEY
  2158.   You will be given a daily allowance of pennies to spend in anything 
  2159.   you can find to spend it on.  See COSTS and SACRIFICING. 
  2160. & PUPPETS
  2161.   PUPPETS   An object is made into a puppet by doing 
  2162.   @set [object]=puppet.  Once an object is a puppet it will relay all 
  2163.   that it sees and hears to its master.  All objects created by a 
  2164.   puppet are owned by its master.  When puppets spend or earn pennies
  2165.   they are also taken from and given to its master. In order to 
  2166.   prevent puppets from screwing up puzzles objects may have the key 
  2167.   flag set, which will prevent puppets from picking the object up. A 
  2168.   puppet may be commanded by its master by:  
  2169.   @force [object]=command or by the shorthand version, 
  2170.   [name/# of puppet] command
  2171.  
  2172.   example:       
  2173.   @force fred="hi there. or     
  2174.   fred "hi there. or       
  2175.   #4342 "hi there.  
  2176. & ROBBERY
  2177.   ROBBERY   Robbing is not allowed on this MUSH. If you really 
  2178.   need money, ask your friendly neighborhood wizard, or @destroy
  2179.   some objects you no longer need.
  2180. & SACRIFICING
  2181.   SACRIFICING    You sacrifice a thing by dropping it in the temple. 
  2182.   Sacrificing an object gives you the value of an object. You can't 
  2183.   sacrifice something you own, and get money for it. If you have 
  2184.   >= 10000 pennies, all sacrifices are worth only 1 pennies. The 
  2185.   sacrifice value of a thing is set at creation by 
  2186.   "@create frob=cost", by the formula value=(cost/5)-1. Only a wizard
  2187.   can change the value of an object, once created.
  2188. & SUBSTITUTIONS
  2189.   SUBSTITUTIONS  All messages may contain %-substitutions, which 
  2190.   evaluate to gender-specific pronouns if the player's gender is set.
  2191.   They are:
  2192.   %s (subjective) = Name, he, she, it.
  2193.   %o (objective) = Name, him, her, it.
  2194.   %p (possessive) = Name's, his, her, its.
  2195.   %N (player's name) = Name.
  2196.   If you need a '%', use %%.
  2197.   Ex. '@ofail teapot=burns %p hand on the hot teapot.'
  2198.   See GENDER. 
  2199.  
  2200.   Other substitutions, such as %va-%vz, %wa-%wz, %xa-%xz, and %0-%9 
  2201.   may also be used and will be evaluated to v(?) (See V-FUNCTIONS)
  2202.   where ? is a-z or 0-9. In these substitutions and pronoun substituions,
  2203.   if the first letter of the name is capitalized, the first letter of
  2204.   the substitution will also be capitalized.
  2205.  
  2206.   Other possible substitutions are:
  2207.   %# (player number) = #<actor's number>. Equivalent to num(%N)
  2208.   %! (object number) = #<message holder's number>. Equivalent to num(me)
  2209.   %l (location number) = #<actor's location>. Like loc(%N).  This
  2210.      works even if the LOC() function would normally not, since the
  2211.      enactor has "volunteered" his location by triggering another object.
  2212.   %r (newline) = Carriage return and newline in output. Note that this
  2213.      counts as two characters, in functions like strlen().  (puts "\r\n")
  2214.   %t (tab) = Tab character in output.
  2215.   %b (blank) = Space in output.
  2216.   %_<attrname> This will give you the discreet value of ANY attribute you can
  2217.      read on the object.
  2218.  
  2219. & SUCCESS
  2220.   SUCCESS   You successfully use an object when you take it. You use 
  2221.   an exit successfully  when you go through it. You successfully use
  2222.   a room when you look around. See  ATTRIBUTES, @SUCCESS and @OSUCCESS. 
  2223. & TYPES OF OBJECTS
  2224.   TYPES OF OBJECTS    There are 4 types of objects: things, players, 
  2225.   exits, and rooms. The first  letter following an object's ID number
  2226.   indicates the type: P(layer), E(xit),  R(oom), otherwise, thing. 
  2227.   Things are inanimate objects that can be carried.  Players are 
  2228.   animate objects that can move and carry. Exits are the means by 
  2229.   which objects move from room to room. Rooms are locations that 
  2230.   contain objects and linked exits.
  2231. & ENACTOR
  2232.   The enactor is the thing that is doing something.  If one of your 
  2233.   Objects does something (through a @force or @trigger) it is the 
  2234.   enactor.  If one of your links or rooms does something (through a 
  2235.   @Asuc, @Afail or @Aenter) then YOU are the enactor and the action 
  2236.   happens as if you typed it in directly.  To determine the enactor 
  2237.   create an object to listen for the action with @ahear = :[v(N)].
  2238. & STACK
  2239.   V(0) through V(9) are the ten items on the stack.  Stack values can
  2240.   be set by either parameters after an @trigger or asterisk substitution
  2241.   in pattern matching.
  2242.   Example: @listen item=* foo *; @ahear item= [v(1)] bar [v(0)].
  2243. & @switch
  2244.   @switch [/<switch>] <string> = <expr1>, <action1> [,<exprN>, 
  2245.                                  <actionN>]... [,<default>]
  2246.   This is a general control structure which can be thought of as a
  2247.   combination if/then/else and switch/case. It compares <string> against
  2248.   the expressions <expr1>, <expr2>, ..., <exprN> until a match is found.
  2249.   It then performs the associated action list. It matches all expressions
  2250.   which conform to the string pattern, and executes all the associated
  2251.   actions. (To match only the first, use "@select"). If no match is found,
  2252.   the <default> is executed. Wildcards and the < and > operators are 
  2253.   allowed in the targets.
  2254.   This is the default. @switch also can take two switches, /all and
  2255.   /first. The default is /all; /first is equivalent to @select.
  2256.   Example:
  2257.     > @va thing = $foo *:@switch %0=*a*,:acks,*b*,:bars,*c*,:cheeps,:glurps
  2258.     > foo abc
  2259.     thing acks
  2260.     thing bars
  2261.     thing cheeps
  2262.     > foo xxx
  2263.     thing glurps
  2264.  
  2265. & @select
  2266.   @select <string> = <expr1>, <action1> [,<exprN>, <actionN>]... [,<default>]
  2267.   This is similar to @switch, except it only executes the action
  2268.   associated with the first expression which matches <string> - the
  2269.   targets are mutually exclusive. If no target is matched, the default
  2270.   actions are executed. This is equivalent to "@switch/first".
  2271.   Example:
  2272.     > @va thing = $foo *:@select %0=*a*,:acks,*b*,:bars,*c*,:cheeps,:glurps
  2273.     > foo abc
  2274.    thing acks
  2275.     > foo xxx
  2276.    thing glurps
  2277.  
  2278. & @trigger 
  2279.   @trigger can pass control and data (on the stack) between or within
  2280.   items.
  2281.   Example: @va item=@trigger me/vb=[v(0)]; @vb item = :[v(0)];
  2282.   @trigger item/va=foo.
  2283. & VERBS
  2284.   For most verbs there are three forms: Verb (what the Enactor sees),
  2285.   Overb (what others in the area see) and Averb (the action to be 
  2286.   taken when the event happens). Example: @Drop, @Odrop and @Adrop
  2287. & V-function
  2288.   The V() function is used to get attributes on an object, as
  2289.   well as another form of writing certain %-substitutions.
  2290.   v(N) is the name of the enactor, v(#) is the number of the
  2291.   enactor, v(!) is the number of the current object,
  2292.   v(L) is the number of the enactor's location, v(0) to v(9)
  2293.   are the stack variables. These are equivalent to %N, %#, %!,
  2294.   %L, and %0 to %9, respectively.
  2295.  
  2296.   When used to get attributes, this function takes the form
  2297.   V(<name of attribute>). This is equivalent to GET(me/<attribute>)
  2298.   but V() is faster.
  2299.  
  2300. & @scan
  2301.   @scan[/<switch>] <command>
  2302.   
  2303.   @scan gives you a list of all objects containing $commands (user-defined
  2304.   commands) which could match <command>. If given no switches, it checks
  2305.   you, your possessions, your location, objects in your location, the
  2306.   zone/parent room of your location, your zone, and objects in the master
  2307.   room. It does NOT stop when it gets a match, but rather, finds all 
  2308.   possible matches. It also tells how many commands on each object were
  2309.   matched. It does NOT scan objects that you do not control and are not
  2310.   set VISUAL.
  2311.   
  2312.   This command can take four switches:
  2313.      /room     --   just matches on your location and objects in it.
  2314.      /self     --   just matches on you and anything you're carrying.
  2315.      /zone     --   just matches on zones of your location and yourself.
  2316.      /globals  --   just matches on objects in the master room.
  2317. & @sweep
  2318.   @sweep [connected | here | inventory | exits ]
  2319.  
  2320.   @sweep gives you a list of all objects/players that are listening in
  2321.   the room you are currently in, as well as the objects you are
  2322.   carrying. Most objects only listen for a particular string or
  2323.   phrase, so they normally do not pose a problem if you need privacy.
  2324.   You will have to be careful of players and puppets since they will
  2325.   hear everything you say and do. (And might post the same to r.g.m!)
  2326.   AUDIBLE exits are also shown on an ordinary sweep, if the room is
  2327.   also AUDIBLE. (Audible exits aren't active unless the room is audible).
  2328.  
  2329.   The four command options can also be used as switches (i.e., you
  2330.   can use "@sweep/connected" instead of "@sweep connected"). 
  2331.   If the connected flag is given, only connected players and puppets
  2332.   owned by connected players will be shown in the @sweep.
  2333.   The "here" and "inventory" flags check only your location or
  2334.   inventory, respectively. "exits" only checks for AUDIBLE exits.
  2335.  
  2336. & @cpattr
  2337.   @cpattr <obj>/<attr> = <obj1>/<attr1> [,<obj2>/<attr2>,<obj3>/<attr3>,...]
  2338.   
  2339.   This command is used to copy <attr> on <obj> to the object-attribute
  2340.   pairs in a comma-separated list. For example:
  2341.   
  2342.   @cpattr test/va = test/vb, cube/va, tribble/foo
  2343.   
  2344.   would copy the VA attribute from object "test" to VB on "test",
  2345.   VA on "cube", and FOO on "tribble".  <objN> is matched as if
  2346.   you were performing a @set on it.
  2347. & SPOOFING
  2348.   Spoofing is the act of making other characters think that a person
  2349.   said or did something that they did not.  This is very easy to
  2350.   accomplish, and has some good effects, which is why it is allowed.
  2351.   Overabuse of this feature will result in its being made a wizard
  2352.   only feature. (Not to mention perhaps bringing down a few @toads on
  2353.   people) See also @emit, @pemit, @remit, @oemit and NOSPOOF.
  2354.  
  2355. & @function
  2356.   @function [<function name>=<object>,<attribute>]
  2357.   
  2358.   When used without any arguments, this command lists all global
  2359.   user-defined functions. For wizards and others with the Functions
  2360.   power, it also lists the dbref number and attribute corresponding
  2361.   to the listed functions.
  2362.   
  2363.   Otherwise, this command defines a global function with the name
  2364.   <function name>, which evaluates to <attribute> on <object>.
  2365.   <object> can be anything that the player using the @function command
  2366.   can examine. <function name> must be 30 characters or less.
  2367.  
  2368.   When something is defined via @function, normal mortals don't have to
  2369.   be able to read <object>'s <attribute> in order to use it - to the
  2370.   user, such functions behave exactly like the functions built into
  2371.   the MUSH server. This hides the details of the implementation from
  2372.   the user.
  2373.  
  2374.   For more details on global user-functions, read "help @function2".
  2375.  
  2376. & @function2
  2377.   Functions defined via @function should follow the format used by
  2378.   UFUN() - %0 is the first argument passed, %1 is the second argument
  2379.   passed, and so forth.
  2380.   
  2381.   Example:
  2382.   
  2383.     > &WORD_CONCAT #10=%0 %1
  2384.     > say "[ufun(#10/word_concat,foo,bar)]
  2385.     You say, "foo bar"
  2386.   
  2387.     > @function wcat = #10, word_concat
  2388.     > say "[wcat(foo,bar)]
  2389.     You say, "foo bar"
  2390.  
  2391.   Global user-defined functions are not automatically loaded when the
  2392.   game is restarted. In order to avoid objects which attempt to use
  2393.   functions that have not been loaded, a @startup containing @function
  2394.   commands should be set on a wizard object with as low a dbref number 
  2395.   as possible; object #1 (generally God) is suggested for this use.
  2396.   
  2397. & FUNCTIONS
  2398.   Functions are specialized commands used to manipulate strings and
  2399.   other input. Function take the general form:  [FUNCTION(<input>)]
  2400.     
  2401.   The brackets are used to delimit and force evaluation of the function 
  2402.   (or nested functions). The brackets can also be used to group functions 
  2403.   for the purposes of string concatenation. In general, more than one pair 
  2404.   of brackets is not required, but liberal use of them makes code easier to 
  2405.   read. You can nest an arbitrary number of brackets.
  2406.  
  2407.   Examples:
  2408.       > say [first(rest(This is a nice day))]
  2409.       You say, "is"
  2410.       > @va me=This is a 
  2411.       Wizard - Set.
  2412.       > @vb me=nice day
  2413.       Wizard - Set.
  2414.       > say [first([rest([v(va)] [v(vb)])])]
  2415.       You say, "is"
  2416.   
  2417.   See "help FUNCTIONS2" for more.
  2418.  
  2419. & FUNCTIONS2
  2420.   
  2421.   A list of available built-in functions can be obtained via the command
  2422.   "@config/functions". In the help text, the list is under the topic
  2423.   "FUNCTION LIST".
  2424.   
  2425.   In addition to these built-in functions are MUSH-defined "global user
  2426.   functions."  These are defined by wizards or those with the "Function"
  2427.   power, via the "@function" command. To the user, they act just like
  2428.   the built-in game functions. For details on global user functions,
  2429.   see "help @function".
  2430.   
  2431. & FUNCTION LIST
  2432.  
  2433.   Several major variants of functions are available. The help topics
  2434.   are listed below, together with a quick summary of the function type
  2435.   and some examples of that type of function.
  2436.  
  2437.   Attribute functions: attribute-related manipulations (GET, UFUN)
  2438.   Boolean functions:  produce 0 or 1 (false or true) answers  (OR, AND)
  2439.   Dbref functions: return dbref info related to objects (LOC, LEXITS)
  2440.   Floating point functions: floating point math (SIN, ROUND)
  2441.   Information functions:  find out something about objects (FLAGS, MONEY)
  2442.   List functions:  manipulate lists (REVWORDS, FIRST)
  2443.   Math functions:  number manipulation, generic or integers only (ADD, DIV)
  2444.   String functions:  string manipulation (ESCAPE, FLIP)
  2445.   Utility functions: general utilties (TIME, COMP)
  2446.   
  2447.   The command "@config/functions" lists all of the game's built-in functions.
  2448.   
  2449. & Attribute functions
  2450.   All these functions access attributes on an object.
  2451.   
  2452.   eval()        filter()      fold()        get()         grep()        
  2453.   lattr()       obj()         poss()        subj()        ufun()        
  2454.   v-function    xget()          zfun()
  2455.   
  2456. & Boolean functions
  2457.   Boolean functions all return 0 or 1 as an answer.
  2458.   
  2459.   and()         eq()          gt()          gte()         lt()
  2460.   lte()         neq()         not()         or()          xor()
  2461.     
  2462. & Dbref functions
  2463.   Dbref functions return a dbref or list of dbrefs related to some value
  2464.   on an object.
  2465.   
  2466.   con()         home()        lcon()        lexits()      loc()
  2467.   locate()      lsearch()     next()        num()         owner()
  2468.   parent()      pmatch()      rnum()        room()        where()
  2469.   zone()
  2470.   
  2471. & Information functions
  2472.   Information functions return values related to objects.
  2473.  
  2474.   andflags()    conn()        controls()    elock()       flags()       
  2475.   hasflag()     idlesecs()    lock()        lstats()      lwho()        
  2476.   mail()        money()       name()        nearby()      orflags()
  2477.   type()        visible()
  2478.   
  2479. & Floating point functions
  2480.   Floating point functions operate on floating point numbers. Most of
  2481.   them return a floating-point number as a result. Floating point
  2482.   results can have at most 6 decimal places of precision.
  2483.  
  2484.   These functions only exist if floating point computation is enabled.
  2485.   Check "@config" to see if they are.
  2486.  
  2487.   acos()        asin()        atan()        ceil()        cos()
  2488.   e()           exp()         fdiv()        floor()       log()
  2489.   ln()          pi()          power()       round()       sin()
  2490.   tan()
  2491.  
  2492. & List functions
  2493.   List functions take at least one space-separated list of words and 
  2494.   return transformed lists or one or more members of those lists.
  2495.   
  2496.   after()       before()      extract()     first()       iter()        
  2497.   match()       member()      remove()      rest()        revwords()    
  2498.   setdiff()     setinter()    setunion()    shuffle()      sort()        
  2499.   splice()      wordpos()     words()
  2500.   
  2501.   Some list functions also operate on arbitrary separators. A space
  2502.   is used if no separator is given, usually.
  2503.   
  2504.   delete()    element()    index()        insert()      items()
  2505.   replace()
  2506.    
  2507. & Math functions
  2508.   Math functions take one or more numbers and return a numeric value.
  2509.  
  2510.   These functions can taken both integers and floating point numbers:
  2511.  
  2512.   add()         max()         min()         mul()         sign()
  2513.   sub()         trunc()
  2514.  
  2515.   These functions operate only on integers (if passed floating point
  2516.   numbers, the numbers will be truncated to integers):
  2517.  
  2518.   abs()         dist2d()      dist3d()      div()         mod()
  2519.   
  2520. & String functions
  2521.   String functions take at least one string and return a transformed
  2522.   string, parts of a string, or a value related to the string(s).
  2523.   
  2524.   alphamin()    alphamax()    art()         capstr()      cat()
  2525.   comp()        edit()        escape()      flip()        lcstr()
  2526.   ljust()    merge()       mid()         pos()         repeat()      
  2527.   rjust()       scramble()    secure()      space()       squish()      
  2528.   strcat()      strlen()      switch()      ucstr()
  2529.  
  2530. & Utility functions
  2531.   These functions don't quite fit into any other category.
  2532.   
  2533.   beep()        convsecs()    convtime()    create()      die()
  2534.   dig()         isnum()       isword()        lnum()        open()        
  2535.   r-function    rand()        s-function    secs()        setq()
  2536.   time()
  2537.   
  2538. & ANDFLAGS()
  2539.   andflags(<object>,<list of flags>)
  2540.  
  2541.   This function returns 1 if <object> has all the flags in a specified
  2542.   list, and 0 if it does not. The list is specified with a single letter
  2543.   standing for each flag, like the output of the FLAGS() function. A '!'
  2544.   preceding a flag letter means "not flag".
  2545.   
  2546.   Thus, ANDFLAGS(me,WD) would return 1 if I was set WIZARD and DARK.
  2547.   ANDFLAGS(me,W!Dc) would return 1 if I was set WIZARD, not DARK,
  2548.   and CONNECTED.
  2549.   
  2550.   If a letter does not correspond to any flag, <object> doesn't have
  2551.   it, so the function returns 0. There can be an arbitrary number of
  2552.   flags. Do not put spaces between flag letters.
  2553.   
  2554. & ORFLAGS()
  2555.   orflags(<object>,<list of flags>)
  2556.   
  2557.   This function returns 1 if <object> has at least one of the flags in
  2558.   a specified list, and 0 if it does not. The list is specified with a
  2559.   single letter standing for each flag, like the output of the FLAGS()
  2560.   function. A '!' preceding a flag letter means "not flag".
  2561.   
  2562.   Thus, ORFLAGS(me,Wr) would return 1 if I am set WIZARD or ROYALTY.
  2563.   ORFLAGS(me,D!c) would return 1 if I am DARK or not CONNECTED.
  2564.   
  2565.   If a letter does not correspond to any flag, <object> doesn't have
  2566.   it, so it is simply ignored. There can be an arbitrary number of
  2567.   flags. Do not put spaces between flag letters.
  2568.    
  2569. & ITEMS()
  2570.   items(<list>,<single-character separator>)
  2571.   
  2572.   This counts the number of items in a list which uses some arbitrary
  2573.   separator. This is similar in functino to WORDS(), but you can use
  2574.   any character, not just a space.
  2575.  
  2576.   Example:
  2577.     > say [items(this|is|a|short|string,|)]
  2578.     You say, "5"
  2579.    
  2580. & ELEMENT()
  2581.   element(<list>,<item>,<single-character separator>)
  2582.   
  2583.   This returns the position of <item> in <list>, where <list>'s items
  2584.   are separated by <separator>. A wildcard match is done, so this 
  2585.   function behaves much like MATCH().
  2586.   
  2587.   Example:
  2588.     > say [element(this|is|a|test|string,is,|)]
  2589.     You say, "2"
  2590.  
  2591. & DELETE()
  2592.   delete(<list>,<position>[,<single-character separator>])
  2593.   
  2594.   This deletes the item at <position> in the list. If a separator
  2595.   character is not given, a space is assumed.
  2596.   
  2597.   Examples:
  2598.     > say [delete(This is a long test string,4)]
  2599.     You say, "This is a test string"
  2600.     > say [delete(lemon|orange|apple,2,|)]
  2601.     You say, "lemon|apple"
  2602.   
  2603. & REPLACE()
  2604.   replace(<list>,<position>,<new item>[,<single-character separator>])
  2605.   
  2606.   This replaces the item at <position> of <list> with <new item>.
  2607.   If no separator is given, a space is assumed.
  2608.   
  2609.   Examples:
  2610.     > say [replace(Turn north at the junction,2,south)]
  2611.     You say, "Turn south at the junction"
  2612.     > say [replace(blue|red|green|yellow,3,white,|)]
  2613.     You say, "blue|red|white|yellow"
  2614.   
  2615. & INSERT()
  2616.   insert(<list>,<position>,<new item>[,<single-character separator>])
  2617.   
  2618.   This inserts before the item of <list> at <position> the <new item>.
  2619.   That means that <new item> then becomes the <position>th element of
  2620.   <list>. If a separator is not given, a space is assumed.
  2621.   
  2622.   Examples:
  2623.     > say [insert(This is a string,4,test)]
  2624.     You say, "This is a test string"
  2625.     > say [insert(one|three|four,2,two,|)]
  2626.     You say, "one|two|three|four"
  2627.   
  2628. & VISIBLE()
  2629.   visible(<object>,<victim>[/<attribute>])
  2630.   
  2631.   If no attribute name is provided, this function returns 1 if 
  2632.   <object> can examine <victim>, or 0, if it cannot. If an
  2633.   attribute name is given, the function returns 1 if <object>
  2634.   can see the attribute <attribute> on <victim>, or 0, if it
  2635.   cannot.
  2636.   
  2637.   If <object>, <victim>, or <attribute> is invalid, the function
  2638.   returns 0.
  2639.   
  2640. & CONTROLS()
  2641.   controls(<object>,<victim>)
  2642.   
  2643.   This function returns 1 if <object> controls <victim>, or 0, if
  2644.   it does not.
  2645.  
  2646.   See also CONTROLS.
  2647.   
  2648. & SHUFFLE()
  2649.   shuffle(<word1> <word2> <word3> <...wordN>)
  2650.   
  2651.   This function shuffles the order of words in a list, returning a
  2652.   random permutation of its elements. "[shuffle(foo bar baz gleep)]" 
  2653.   might evaluate to "baz foo gleep bar".
  2654.   
  2655. & SCRAMBLE()
  2656.   scramble(<string>)
  2657.   
  2658.   This function scrambles a string, returning a random permutation of its 
  2659.   characters. For example, "[scramble(abcdef)]" might return "cfaedb".
  2660.   Note that this function does not pay any attention to spaces or other
  2661.   special characters; it will scramble these characters just like normal
  2662.   characters.
  2663.   
  2664. & R-FUNCTION
  2665.   r(<number>)
  2666.   
  2667.   The r() function is used to access "local registers", and returns
  2668.   the contents of the specified register. There are ten such registers,
  2669.   numbered 0 through 9.
  2670.   
  2671.   See "help SETQ()" for details about registers.
  2672.   
  2673. & SETQ()
  2674.   setq(<number>,<string>)
  2675.   
  2676.   The setq() function is used to copy strings into local registers.
  2677.   It returns a null string; it is a purely "side effect" function.
  2678.   
  2679.   There are ten local registers, numbered 0 through 9. They are cleared
  2680.   at the start of each new queue cycle (i.e. whenever a new command is
  2681.   evaluated). They are most useful for storing complex function evaluations
  2682.   which are used repeatedly within a single command.
  2683.   
  2684.   See "help SETQ2" for examples of its use.
  2685.   
  2686. & SETQ2
  2687.   
  2688.   The setq() function is probably best used at the start of the string
  2689.   being manipulated, such as in the following example:
  2690.   
  2691.     > &TEST object=[strlen(%0)]
  2692.     > &CMD object=$test *:"[setq(0,u(TEST,%0))]Test. %0 has length [r(0)].
  2693.     > test Foo
  2694.     Object says, "Test. Foo has length 3."
  2695.   
  2696.   In this case, it is a waste to use setq(), since we only use the function
  2697.   result once, but if TEST was a complex function being used multiple times
  2698.   within the same command, it would be much more efficient to use the local
  2699.   register, since TEST would then only be evaluated once.
  2700.   
  2701.   setq() can thus be used to improve the readability of MUSH code, as well
  2702.   as to cut down the amount of time needed to do complex evaluations.
  2703.   
  2704. & LJUST()
  2705.   ljust(<string>,<length>[,<fill>])
  2706.   
  2707.   This function pads a string with trailing characters ("left-justifies")
  2708.   so it is <length> long. If <string> is longer than <length>, the <string> 
  2709.   is returned; it is not truncated. If <fill> is not specified, a space
  2710.   is used.
  2711.   
  2712.   Examples:
  2713.   
  2714.     > say [ljust(foo,6)]
  2715.     You say, "foo   "
  2716.   
  2717.     > say %r0[ljust(foo,6,-)]7%r01234567
  2718.     You say, "
  2719.     0foo---7
  2720.     01234567"
  2721.  
  2722. & RJUST()
  2723.   rjust(<string>,<length>[,<fill>])
  2724.   
  2725.   This function pads a string with leading characters ("right-justifies")
  2726.   so it is <length> long. If <string> is longer than <length>, the <string>
  2727.   is returned; it is not truncated. If <fill> is not specified, a space
  2728.   is used.
  2729.  
  2730.   Examples:
  2731.   
  2732.     > say -[rjust(foo,6)]-
  2733.     You say, "-   foo-"
  2734.   
  2735.     > say %r0[rjust(foo,6,-)]%r01234567
  2736.     You say, "
  2737.     0---foo7
  2738.     01234567"
  2739.  
  2740. & FILTER()
  2741.   filter([<obj>/]<attr>, <list>)
  2742.   
  2743.   This function returns the elements of <list> for which a user-defined
  2744.   function evaluates to "1". That function is specified by the first
  2745.   argument (just as with the ufun() function), and the element of the 
  2746.   list being tested is passed to that user-defined function as %0.
  2747.   
  2748.   Thus, "filter(obj/attr, x1 x2 x3)" is equivalent to
  2749.   "iter(x1 x2 x3, switch(ufun(obj/attr, ##),1,##,))"
  2750.   
  2751.   Example:
  2752.   
  2753.     > &IS_ODD test=[mod(%0,2)]
  2754.     > say [filter(test/is_odd, 1 2 3 4 5 6)]
  2755.     You say, "1 3 5"
  2756.  
  2757. & FOLD()
  2758.   fold([<obj>/]<attr>, <list>[, <base case>])
  2759.   
  2760.   This function "folds" a list through a user-defined function, specified
  2761.   by the first argument to fold(), which is analogous to ufun()'s first
  2762.   argument.
  2763.   
  2764.   If no base case is provided, fold() passes the first element of <list>
  2765.   as %0, and the second element of <list> as %1, to the user-defined
  2766.   function. The user-defined function is then called again, with the
  2767.   result of the first evaluation being %0, and the next (third) element
  2768.   of the list as %1. This is repeated until all the elements of the 
  2769.   list have been used.
  2770.   
  2771.   If a base case is provided, it is passed as %0, and the first element
  2772.   of list is passed as %1, to the user-defined function. The process for
  2773.   the no-base-case fold() is then used.
  2774.   
  2775.   See 'help FOLD2' for examples.
  2776.  
  2777. & FOLD2
  2778.  
  2779.   Examples:
  2780.   
  2781.     > &REP_NUM test=%0[repeat(%1,%1)]
  2782.     > say [fold(test/rep_num,1 2 3 4 5)]
  2783.     You say, "122333444455555"
  2784.     > say [fold(test/rep_num,1 2 3 4 5,List:)]
  2785.     You say, "List:122333444455555"
  2786.   
  2787.     > &ADD_NUMS test=add(%0,%1)
  2788.     > say [fold(test/add_nums,1 2 3 4 5)]
  2789.     You say, "15"
  2790.  
  2791. & SQUISH()
  2792.   squish(<string>)
  2793.   
  2794.   This function removes the leading and trailing spaces from a string,
  2795.   and condenses all inter-word spaces to a single space. This applies
  2796.   only to literal spaces, and not to tabs or newlines.
  2797.   
  2798.   Example:
  2799.   
  2800.     > say [squish(  foo bar  baz blech   eek )]
  2801.     You say, "foo bar baz blech eek"
  2802.   
  2803. & INDEX()
  2804.   index(<list>,<character>,<first>,<length>)
  2805.   
  2806.   This function is similar to EXTRACT(), except that an item in the
  2807.   list may be more than one word; instead of a space being used to
  2808.   separate items in the list, <character> is used. The function returns 
  2809.   <length> items starting from that in the <first> position. Trailing
  2810.   spaces are trimmed. The comma cannot be used as the <character> separator. 
  2811.   
  2812.   Examples:
  2813.   
  2814.     > say [index(Cup of Tea | Mug of Beer | Glass of Wine, |, 2, 1)]
  2815.     You say, "Mug of Beer"
  2816.  
  2817.     > say [index(%rtoy boat^%rblue tribble^%rcute doll^%rred ball,^,2,2)]
  2818.     You say, "
  2819.     blue tribble^
  2820.     cute doll"
  2821.   
  2822. & TRUNC()
  2823.   trunc(<string>)
  2824.   
  2825.   This function truncates floating point numbers to integers. It can
  2826.   also be used to return the leading numeric prefix of a string, or
  2827.   "0" if there isn't one. For example, "val(101Dalmations)"  => 101.
  2828.   
  2829. & ISWORD()
  2830.   isword(<string>)
  2831.   
  2832.   This function returns 1 if every character in <string> is a letter,
  2833.   or 0, if any character isn't a letter.  Case does not matter.
  2834.     
  2835. & ISNUM()
  2836.   isnum(<string>)
  2837.  
  2838.   This function returns 1 if <string> is a number, and 0 if it is not.
  2839.   Numbers can begin with a '-' sign (for negatives), but the rest of
  2840.   the characters in the string must be digits.
  2841.   
  2842. & GREP()
  2843.   grep(<object>,<attrs>,<pattern>)
  2844.   
  2845.   This function returns a list of attributes on <object> containing
  2846.   <pattern>.  <attrs> is a wildcard pattern for attribute names to
  2847.   search; if you want to search all attributes, use "*".
  2848.   
  2849.   The list returned is similar to that returned by
  2850.   @grep/list <object>/<attrs>=<pattern>
  2851.   
  2852.   Parsing _does_ occur before this function is invoked. Therefore,
  2853.   "special" characters will need to be escaped out.  <pattern> is
  2854.   NOT wildcard matched.
  2855. & REPEAT()
  2856.   repeat(<string>,<number>)
  2857.   
  2858.   This function simply repeats <string>, <number> times.  No spaces are
  2859.   inserted between each repetition.
  2860.   
  2861.   Example:
  2862.     > say [repeat(Test, 5)]
  2863.     You say, "TestTestTestTestTest"
  2864.   
  2865. & SPLICE()
  2866.   splice(<list1>, <list2>, <word>)
  2867.   
  2868.   This function splices <list1> and <list2> together. <list1> and <list2>
  2869.   are space-separated lists of words
  2870.   
  2871.   If a word in <list1> is the same as <word>, it is replaced by the word
  2872.   in the corresponding position in <list2>.  Both lists must have the
  2873.   same number of words.
  2874.   
  2875.   Example:
  2876.     > say [splice(foo bar baz,eek moof gleep,bar)]
  2877.     You say, "foo moof baz"
  2878.   
  2879. & MERGE()
  2880.   merge(<string1>, <string2>, <character>)
  2881.   
  2882.   This function merges <string1> and <string2>, depending on <character>.
  2883.   If a character in <string1> is the same as <character>, it is replaced
  2884.   by the character in the corresponding position in <string2>.  The two
  2885.   strings must be of the same length.
  2886.   
  2887.   Example:
  2888.     > say [merge(AB--EF,abcdef,-)]
  2889.     You say, "ABcdEF"
  2890.  
  2891.   Spaces need to be treated specially. A null character is considered to
  2892.   equal a space, for <character>.
  2893.   
  2894.   Example:
  2895.     > say [merge(AB[space(2)]EF,abcdef,)]
  2896.     You say, "ABcdEF"
  2897.   
  2898. & EDIT()
  2899.   edit(<string>, <search>, <replace>)
  2900.   edit(<string>, $, <string to append>)
  2901.   edit(<string>, ^, <string to prepend>)
  2902.  
  2903.   This functions in a similar way to the @edit command; instead of
  2904.   taking an attribute from an object, it takes an arbitrary string.
  2905.   The first form of the function searches <string> for <search> and
  2906.   replaces it with <replace>; the other two forms append and prepend
  2907.   text to <string>, respectively.
  2908.   
  2909.   See also "help @edit".
  2910. & SWITCH()
  2911.   switch(<string>, <expr1>, <list1>, [<exprN>, <listN>], ...[<default>])
  2912.  
  2913.   This function matches <string> against the <expr>essions, returning the
  2914.   corresponding <list>. If nothing is matched, the <default> is returned.
  2915.   This is similar to @switch/first, but instead of executing the list,
  2916.   it simply returns it. Wildcard patterns are allowed. There may be
  2917.   a maximum of ten arguments total to the function.
  2918.  
  2919.   Example:
  2920.     > say switch(test, *a*, foo, *b*, bar, *t*, neat, baz)
  2921.     You say, "neat"
  2922.     > say switch(ack, *a*, foo, *b*, bar, *t*, neat, baz)
  2923.     You say, "foo"
  2924.     > say switch(moof, *a*, foo, *b*, bar, *t*, neat, baz)
  2925.     You say, "baz"
  2926.  
  2927. & REVWORDS()
  2928.   revwords(<list of words>)
  2929.  
  2930.   This function reverses the order of words in a list.
  2931.  
  2932.   Example:
  2933.     > say revwords(foo bar baz eep)
  2934.     You say, "eep baz bar foo"
  2935.   
  2936. & SETDIFF()
  2937.   setdiff(<list1>, <list2>)
  2938.  
  2939.   This function returns the difference of two sets -- i.e., the 
  2940.   elements in <list1> that aren't in <list2>. The list that
  2941.   is returned is sorted.
  2942.  
  2943.   Example:
  2944.     > say setdiff(foo baz gleep bar, bar moof gleep)
  2945.     You say, "baz foo"
  2946.  
  2947. & SETINTER()
  2948.   setinter(<list1>, <list2>)
  2949.  
  2950.   This function returns the intersection of two sets -- i.e., the
  2951.   elements that are in both <list1> and <list2>. The list that is
  2952.   returned is sorted.
  2953.  
  2954.   Example:
  2955.     > say setinter(foo baz gleep bar, bar moof gleep)
  2956.    You say, "bar gleep"
  2957.  
  2958. & SETUNION()
  2959.   setunion(<list1>, <list2>)
  2960.  
  2961.   This function returns the union of two sets -- i.e., all the
  2962.   elements of both <list1> and <list2>, minus any duplicate
  2963.   elements. Think of it as CAT() without words duplicated.
  2964.   The list returned is sorted.
  2965.  
  2966.   Example:
  2967.     > say setunion(foo baz gleep bar, bar moof gleep)
  2968.     You say, "bar baz foo gleep moof"
  2969.   
  2970. & CONVSECS()
  2971.   convsecs(<seconds>)
  2972.  
  2973.   This function converts seconds to a time string, based on how many
  2974.   seconds the number is after Jan 1, 1970.
  2975.  
  2976.   Example:
  2977.   > say [secs()]
  2978.   You say, "709395750"
  2979.   > say [convsecs(709395750)]
  2980.   You say, "Wed Jun 24 10:22:54 1992"
  2981.  
  2982. & CONVTIME()
  2983.   convtime(<time string>)
  2984.  
  2985.   This functions converts a time string to the number of seconds since 
  2986.   Jan 1, 1970. A time string is of the format: Ddd MMM DD HH:MM:SS YYYY
  2987.   where Ddd is the day of the week, MMM is the month, DD is the day
  2988.   of the month, HH is the hour in 24-hour time, MM is the minutes,
  2989.   SS is the seconds, and YYYY is the year.
  2990.   If you supply an incorrectly formatted string, it will return -1.
  2991.  
  2992.   Example:
  2993.   > say [time()]
  2994.   You say, "Wed Jun 24 10:22:54 1992"
  2995.   > say [convtime(Wed Jun 24 10:22:54 1992)]
  2996.   You say, "709395774"
  2997.  
  2998. & IDLESECS()
  2999.   idlesecs(<player name>)
  3000.  
  3001.   This function returns the number of seconds a player has been idle,
  3002.   much as WHO does. <player name> must be the full name of a player.
  3003.   Players who are not connected have an idlesecs of "-1", as do
  3004.   dark wizards, when idlesecs() is used on them by a non-priv'ed player.
  3005.  
  3006. & CONN()
  3007.   conn(<player name>)
  3008.  
  3009.   This function returns the number of seconds a player has been
  3010.   connected. <player name> must be the full name of a player.
  3011.   Players who are not connected have a conn value of "-1", as do
  3012.   dark wizards, when conn() is used on them by a non-priv'ed player.
  3013.  
  3014. & PARENT()
  3015.   parent(<object>)
  3016.  
  3017.   This function returns the dbref number of an object's parent. You
  3018.   must control the object. The parent of a player is always #-1.
  3019.  
  3020. & CREATE()
  3021.   create(<object>, <cost>)
  3022.  
  3023.   This function creates an object with name <object> for <cost> pennies,
  3024.   and returns the dbref number of the created object.
  3025.  
  3026. & OPEN()
  3027.   open(<exit name>, <room>)
  3028.  
  3029.   This function opens an exit called <exit name> and links it to
  3030.   <room>, which must be a dbref number. It returns the dbref number
  3031.   of the new exit.
  3032.  
  3033. & DIG()
  3034.   dig(<name>, <exit to>, <exit from>)
  3035.  
  3036.   This function digs a room called <name>, and then opens and links
  3037.   <exit to> and <exit from>, like the normal @dig command. It returns
  3038.   the dbref number of the new room.
  3039.  
  3040. & HOME()
  3041.   home(<object>)
  3042.  
  3043.   Returns the object's 'home'.  This is the home for a player or thing,
  3044.   the drop-to of a room, or source of an exit.
  3045.  
  3046. & ROOM()
  3047.   room(<object>)
  3048.  
  3049.   Returns the "absolute" location of an object. This is always a room;
  3050.   it is the container of all other containers of the object. The
  3051.   "absolute" location of an object is the place @lemit messages are
  3052.   sent to and NO_TEL status determined.
  3053.   You must control the object, be a wizard or royalty, or be near
  3054.   the object in order for this function to work. The exception to this
  3055.   are players; if <object> is a player, the ROOM() function may be
  3056.   used to find the player's absolute location if the player is not
  3057.   set UNFINDABLE.
  3058.  
  3059. & LOCATE()
  3060.   locate(<looker>, <name>, <parameters>)
  3061.  
  3062.   This function attempts to find the number called <name> relative to
  3063.   <looker>. You must control <looker>. This is a bit like the NUM()
  3064.   function, but with a wider, controllable "range".
  3065.  
  3066.   You can control the preferred type of the match with:
  3067.     E   -   Exits
  3068.     L   -   Unlocked exits preferred over locked exits
  3069.     N   -   No type (this is the default)
  3070.     P   -   Players
  3071.     R   -   Rooms
  3072.     T   -   Things
  3073.   If you specify more than one type, the last one will be preferred.
  3074.  
  3075.   (Read "help locate2" for more.)
  3076.  
  3077. & LOCATE2
  3078.  
  3079.   You can control where to look with:
  3080.     a   -   Absolute match (look for #<object>)
  3081.     e   -   Exits in <looker>'s location
  3082.     h   -   "here"  (the location of <looker>)
  3083.     i   -   Inventory of <looker>
  3084.     m   -   "me"  (<looker> itself)
  3085.     n   -   Neighbors (other objects in same location as <looker>)
  3086.     p   -   Player names prefixed by '*'
  3087.     *   -   All of the above (try a complete match)
  3088.  
  3089. Just string all the parameters together, without separating them by
  3090. spaces, i.e.  LOCATE(#100, Test, Tn)  would check #100's neighbors
  3091. for an object named "Test", preferring a thing over other types.
  3092.  
  3093. & BEEP()
  3094.   beep(<number>)
  3095.  
  3096.   Sends <number> "alert" bell characters. <number> must be in the range
  3097.   1 to 5. This function may only be used by wizards.
  3098. & SPACE()
  3099.   space(<number>)
  3100.  
  3101.   Prints <number> number of spaces. Useful for times when you want to
  3102.   be able to use lots of spaces to separate things. For example,
  3103.   "a[space(5)]b  would print, "Amberyl says, "a     b"".
  3104.  
  3105. & LSTATS()
  3106.   lstats(<player>)
  3107.  
  3108.   This function returns the breakdown of objects in the database, in
  3109.   a format similar to "@stats". If <player> is "all", a breakdown is
  3110.   done for the entire database. Otherwise, the breakdown is returned
  3111.   for that particular player. Only wizards can LSTATS() other players.
  3112.   The list returned is in the format:
  3113.   <Total objects> <Rooms> <Exits> <Things> <Players> <Garbage>
  3114. & STRCAT()
  3115.   strcat(<string1>, <string2>)
  3116.  
  3117.   Concatanates two strings together, with no space between them.
  3118.   For example, strcat(foo bar,baz blech) will return the string
  3119.   "foo barbaz blech".
  3120.  
  3121. & ABS()
  3122.   abs(<number>)
  3123.  
  3124.   Returns the absolute value of a number. i.e. ABS(-4) returns 4;
  3125.   ABS(2) returns 2, etc.
  3126. & SIGN()
  3127.   sign(<number>)
  3128.  
  3129.   Essentially returns the sign of a number -- 0 if the number is 0,
  3130.   1 if the number is positive, and -1 if the number is negative.
  3131.   Thus, SIGN(-4) is -1, SIGN(2) is 1, and SIGN(0) is 0.
  3132. & ZFUN()
  3133.   zfun(<user function name>, <arg 0>, <arg1>, ... <arg8>)
  3134.  
  3135.   This is essentially identical to UFUN(), but the attribute corresponding
  3136.   to the user function name is read from the ZMO of the object instead
  3137.   of from the object itself. In order to read the attribute from the ZMO,
  3138.   one of the following criteria must be met:
  3139.  
  3140.   1. The object is set WIZARD or ROYALTY.
  3141.   2. The object controls the ZMO.
  3142.   3. The object's owner owns the attribute on the ZMO.
  3143.   4. The ZMO is set VISUAL.
  3144.   5. The attribute being checked is set VISUAL.
  3145.  
  3146.   See the help for UFUN() for more details on user-defined functions.
  3147.  
  3148. & UFUN()
  3149.   ufun([<object>/]<user function name>, <arg 0>, <arg1>, ... <arg 8>)
  3150.  
  3151.   This allows you to create your own functions and evaluate them.
  3152.   <user function name> is the attribute that contains the desired
  3153.   user-defined function. Supplying <object> is optional; if you
  3154.   do not, the attribute will be read off the object that is
  3155.   evaluating the UFUN().
  3156.   
  3157.   <arg 0>, <arg 1>, ... <arg 8> are the functions that get passed
  3158.   to the user function as v(0), v(1), etc. (as in @trigger).
  3159.   You can pass up to 8 arguments. v(9) is always null.
  3160.   
  3161.   This function is also known as U()  (alias for 2.0 compatibility).
  3162.  
  3163.   See "help UFUN2" for more.
  3164.   
  3165. & UFUN2
  3166.   Example:
  3167.   
  3168.   > @va Object=$test *:"[ufun(testfun, v(0))]; @emit [v(0)]
  3169.   > &testfun object=[strlen(v(0))] [ucstr(v(0))]
  3170.   > test string
  3171.   Foo says, "6 STRING"
  3172.   string
  3173.   
  3174.   See "help UFUN3" for more.
  3175.  
  3176. & UFUN3
  3177.   A user-defined function may be as complex as you want it to be.
  3178.   If the evaluation order doesn't quite seem right, adding escapes
  3179.   or breaking up the expression will probably help.
  3180.     
  3181.   Excessive recursion in either a UFUN() or ZFUN() will cause it to
  3182.   return "#-1 EXCESSIVE RECURSION ERROR", and sets the object HALT.
  3183.   An object which is HALT may not evaluate either UFUN() or ZFUN();
  3184.   those functions will then return "#-1 OBJECT HALTED".
  3185.   
  3186. & EVAL()
  3187.   eval(<object>, <attribute>)
  3188.  
  3189.   This function works identically to the XGET function - it retrieves
  3190.   <attribute> from <object> - except that it also performs pronoun 
  3191.   substitution. For example, if something uses "[v(va)]%r[v(vb)]" in
  3192.   its description, EVAL() called on that object's desc will evaluate
  3193.   the VA and VB attributes correctly, with respect to the object,
  3194.   which neither the GET nor XGET do.
  3195.   
  3196. & ESCAPE()
  3197.   escape(<string>)
  3198.  
  3199.   The ESCAPE() function "escapes out" potentially "dangerous" characters,
  3200.   preventing function evaluation in the next pass of the parser. It 
  3201.   returns <string> after adding the escape character ('\') at the 
  3202.   beginning of the string, and before the following characters:
  3203.   %  ;  [  ]  {  }  \
  3204.   
  3205.   This function prevents strings entered by players from causing side 
  3206.   effects, such as performing an unintended GET() of an attribute. It
  3207.   is only needed when the resulting string will be passed through @force
  3208.   or used as an attribute for an object (like the description of a mail
  3209.   message object).  Since the function preserves the original string, 
  3210.   it is, in most cases, a better choice than SECURE().
  3211.   
  3212. & ITER()
  3213.   iter(<list>,<pattern>)
  3214.   
  3215.   This works in a manner very similar to @map, except that it returns
  3216.   a string directly.  <list> is a space-separated list of words, and
  3217.   <pattern> is what will be "mapped" onto each element of the list,
  3218.   with the token "##" being replaced successively by the next word
  3219.   in the list.  The result is concatenated and returned as a space
  3220.   separated list.  This is similar to @dolist, but the results are
  3221.   made into a list rather than executed.
  3222.   
  3223.   See "help ITER2" for some examples.
  3224.   
  3225. & ITER2
  3226.   Examples:
  3227.   
  3228.   > say [iter(This is a test string., [strlen(##)])]
  3229.   You say, "4 2 1 4 7"
  3230.   
  3231.   > say [iter(lnum(5), mul(add(##,##),2))]
  3232.   You say, "0 4 8 12 16"
  3233.   
  3234.   > say [iter(lexits(here), [name(##)] (owned by [name(owner(##))]))]
  3235.   You say, "South (owned by Claudia) North (owned by Roy)"
  3236.   
  3237.   > &STRLEN_FN me=[strlen(%0)]
  3238.   > say [iter(This is a test string., [u(STRLEN_FN, ##)])]
  3239.   You say, "4 2 1 4 7"
  3240.   
  3241. & PMATCH()
  3242.   pmatch(<string>)
  3243.  
  3244.   Given the partial name of a player, it returns that player's dbref
  3245.   number. This partial name completion works identically to the partial
  3246.   name completion of the "page" command - i.e. it first attempts to match
  3247.   the normal names of all players (connected or not), and if that fails,
  3248.   it tries to match the partial names of connected players. If no player
  3249.   is matched, it returns "#-1". If more than one match is possible for
  3250.   a partial name, it returns "#-2".
  3251.  
  3252. & BEFORE()
  3253.   before(<string1>, <string2>)
  3254.  
  3255.   Returns the portion of <string1> that occurs before <string2>.
  3256.   If <string2> isn't in <string1>, <string1> is returned.
  3257.  
  3258.   Examples:
  3259.    > think before(foo bar baz,bar)
  3260.    foo
  3261.    > think before(foo bar baz,r)
  3262.    foo ba
  3263.  
  3264. & AFTER()
  3265.   after(<string1>, <string2>)
  3266.  
  3267.   Returns the portion of <string1> that occurs after <string2>.
  3268.   If <string2> isn't in <string1>, the function returns a null string.
  3269.  
  3270.   Examples:
  3271.    > think after(foo bar baz,bar)
  3272.     baz
  3273.    > think after(foo bar baz,ba)
  3274.    r baz
  3275.  
  3276. & DIE()
  3277.   die(<number of times to roll die>, <number of sides on die>)
  3278.  
  3279.   This function simulates rolling dice. It "rolls" a die with a given
  3280.   number of sides, a certain number of times, and sums the results.
  3281.   For example, DIE(2, 6) would roll "2d6" - two six-sided dice,
  3282.   generating a result in the range 2-12.
  3283. & SECS()
  3284.   secs()
  3285.  
  3286.   This function takes no arguments, and returns the number of elapsed
  3287.   seconds since midnight, January 1, 1970. This is a good way of
  3288.   synchronizing things that must run at a certain time.
  3289. & SECURE()
  3290.   secure(<string>)
  3291.  
  3292.   This function returns <string> with all "dangerous" characters replaced
  3293.   by spaces. Dangerous characters are ( ) [ ] { } $ % , and ;
  3294.   This can make output slightly ugly, but it's a good way of preventing
  3295.   other people from doing nasty things with your objects.
  3296.  
  3297.   See also:  ESCAPE()
  3298.  
  3299. & ZONE()
  3300.   zone(<object>)
  3301.  
  3302.   Returns the object's 'zone'. This is the dbref of the master object
  3303.   which defines the zone.
  3304.  
  3305. & LATTR()
  3306.   lattr(<object>[/<attribute pattern>])
  3307.  
  3308.   Returns a space-separated list of the attribute names on the object.
  3309.   You must either be a Wizard or Royalty, own the object, have the
  3310.   See_All power, or have the object set VISUAL in order to use this 
  3311.   function on the object.
  3312.   
  3313.   If a wildcarded attribute pattern is provided, only attribute names
  3314.   matching that pattern will be returned.
  3315.  
  3316. & LSEARCH()
  3317.   lsearch(<player>, <class>, <restriction>)
  3318.  
  3319.   This function is similar to the @search command, except it returns
  3320.   just a list of dbref numbers. It is computationally expensive, and
  3321.   costs 100 pennies to perform.
  3322.   The function must have three arguments. Wizards can specify "all"
  3323.   or <player> for the <player> field; mortals must use "me".
  3324.   If you do not want to restrict something, use "none" for <class>
  3325.   and/or <restriction>.
  3326.  
  3327.   Possible <class>es are TYPE, NAME, ZONE, PARENT EXITS, OBJECTS, ROOMS,
  3328.   PLAYERS, and FLAGS. If <class>=TYPE, the possible <restrict>ions are
  3329.   OBJECT, ROOMS, EXITS, and PLAYERS. If <class>=NAME, only objects with 
  3330.   <restriction> whose name matches <restriction> will be listed. If 
  3331.   <class>=EXITS, OBJECT, ROOMS, or PLAYERS, only objects of that type 
  3332.   and whose name matches <restriction> will be listed. If <class>=ZONE, 
  3333.   only objects belonging to the zone <restriction> will be listed. If
  3334.   <class>=PARENT, only children of parent <restriction> will be listed.
  3335.   For ZONE and PARENT, <restriction> must be specified as a dbref number. 
  3336.   If <class>=FLAGS, only objects with the list of flags specified by 
  3337.   <restriction> will be listed. Only wizard and royalty may obtain 
  3338.   information about other players.
  3339.  
  3340.   Examples:
  3341.     lsearch(all, flags, Wc)     <-- lists all connected wizards.
  3342.     lsearch(me, type, rooms)    <-- lists all rooms owned by me.
  3343.  
  3344. & ALPHAMIN()
  3345.   alphamin(<word1>, <word2>, <word3>, ...)
  3346.  
  3347.   Takes up to ten word arguments, and returns the word which is
  3348.   lexicographically smallest.
  3349. & ALPHAMAX()
  3350.   alphamax(<word1>, <word2>, <word3>, ...)
  3351.  
  3352.   Takes up to ten word arguments, and returns the word which is
  3353.   lexicographically biggest.
  3354. & SORT()
  3355.   sort(<word1> <word2> <word3> ...[,<sort type>])
  3356.   
  3357.   This sorts a list of words. If no second argument is given, it will
  3358.   try to detect the type of sort it should do. If all the words are
  3359.   numbers, it will sort them in order of smallest to largest. If all
  3360.   the words are dbrefs, it will sort them in order of smallest to
  3361.   largest. Otherwise, it will perform a lexicographic sort.
  3362.   
  3363.   The following letters as a second argument specify a certain sort:
  3364.  
  3365.   'a':  Sort lexicographically.
  3366.   'd':  Sort dbrefs.
  3367.   'n':  Sort numbers.
  3368.    
  3369. & SUBJ()
  3370.   subj(<object>)
  3371.  
  3372.   Returns the subjective pronoun - he/she/it - for an object.
  3373. & OBJ()
  3374.   obj(<object>)
  3375.  
  3376.   Returns the objective pronoun - him/her/it - for an object.
  3377. & POSS()
  3378.   poss(<object>)
  3379.  
  3380.   Returns the possessive pronoun - his/her/its - for an object.
  3381. & TYPE()
  3382.   type(<object>)
  3383.  
  3384.   This function returns the type of an object - PLAYER, THING, EXIT,
  3385.   or ROOM. See "help types of objects" for more.
  3386. & RNUM()
  3387.   rnum(<room number>, <object>)
  3388.  
  3389.   This function returns the dbref number of an object (player, thing, or
  3390.   exit). The object must be in the specified room. This function is
  3391.   essentially identical to NUM(), except it matches things in the
  3392.   specified room rather than the room that you are in. The RNUM()
  3393.   function is meant to be used in conjunction with Master Room objects.
  3394. & MAX()
  3395.   max(<num1>, <num2>, ..., ...)
  3396.  
  3397.   This function returns the largest number in its list of arguments.
  3398.   It can take up to ten numbers as arguments.
  3399. & MIN()
  3400.   min(<num1>, <num2>, ..., ...)
  3401.  
  3402.   This function returns the smallest number in its list of arguments.
  3403.   It can take up to ten numbers as arguments.
  3404. & MAIL()
  3405.   mail(<mail message #>)
  3406.   mail(<player name>)
  3407.   mail(<player>, <mail message #>)
  3408.  
  3409.   The first form returns a message corresponding to that mail message
  3410.   number in your MUSH mailbox. This function can be used to forward
  3411.   mail, or as a way to simply transfer mail messages to attributes
  3412.   on an object.
  3413.   
  3414.   The second form returns two numbers, corresponding to the number of
  3415.   read and unread messages <player> has.
  3416.   The third form returns <player>'s <mail message #>. It works like
  3417.   the first form except it applies to another player.
  3418.   Only wizards can use the second and third forms of the function
  3419.   on other players.
  3420.   
  3421. & XGET()
  3422.   xget(<object>, <attribute>)
  3423.   
  3424.   This function is identical to get() in purpose, but a comma instead of
  3425.   a slash separates object and attribute. There is no real advantage to
  3426.   using this instead of get(). Please see "help get()" for more details
  3427.   on the use of this function.
  3428.   
  3429. & ART()
  3430.   art(<string>)
  3431.  
  3432.   This function returns the proper article, "a" or "an", based on whether
  3433.   or not <string> begins with a vowel.
  3434. & LWHO()
  3435.   lwho()
  3436.  
  3437.   This returns a list of the dbref numbers for all currently-connected
  3438.   players. When mortals use this function, the dbref numbers of DARK
  3439.   wizards or royalty do NOT appear on the dbref list.
  3440. & HASFLAG()
  3441.   hasflag(<object>, <flag name>)
  3442.  
  3443.   Returns 1 if the object has the named flag, and 0 if it does not.
  3444.   You do not have to control the object.
  3445.   Example: hasflag(me, connected) will return "1"
  3446.   
  3447.   The "flags" ROOM, EXIT, and PLAYER are actually types. If you want
  3448.   to check if an object "has" one of these flags, you must use the
  3449.   TYPE() function.
  3450. & DIST2D()
  3451.   dist2d(x1, y1, x2, y2)
  3452.  
  3453.   Returns the integer distance between two points in the Cartesian
  3454.   plane that have coordinates (x1, y1) and (x2, y2).
  3455. & DIST3D()
  3456.   dist3d(x1, y1, z1, x2, y2, z2)
  3457.  
  3458.   Returns the integer distance between three points in space, with
  3459.   coordinates (x1, y1, z1) and (x2, y2, z2).
  3460. & WORDPOS()
  3461.   wordpos(<string>, <number>)
  3462.  
  3463.   Returns the number of the word within <string> where the <number>th
  3464.   character falls. Characters and words are numbered starting with 1,
  3465.   and spaces between words are treated as belonging to the word that
  3466.   follows them. If <number> is not within the string, #-1 is returned.
  3467.   Example: wordpos(foo bar baz, 5) returns "2"
  3468. & LCSTR()
  3469.   lcstr(<string>)
  3470.  
  3471.   Returns <string> with all letters converted to lowercase.
  3472.   Example: lcstr(Foo BAR bAz) returns "foo bar baz"
  3473. & UCSTR()
  3474.   ucstr(<string>)
  3475.  
  3476.   Returns <string> with all letters converted to uppercase.
  3477.   Example: ucstr(Foo BAR baz) returns "FOO BAR BAZ"
  3478. & CAPSTR()
  3479.   capstr(<string>)
  3480.   
  3481.   Returns <string> with the first character capitalized.
  3482.   Example: capstr(foo bar baz) returns "Foo bar baz"
  3483. & NEARBY()
  3484.   nearby(<object 1>, <object 2>)
  3485.  
  3486.   Returns 1 if object 1 is "nearby" object 2. "Nearby" is defined as:
  3487.   object 1 is in the same location as object 2, or,
  3488.   object 1 is being carried by object 2, or,
  3489.   object 1 is carrying object 2.
  3490.   You must control at least one of the objects.
  3491. & FLIP()
  3492.   flip(<string>)
  3493.  
  3494.   This function reverses a string. For example, "flip(foo bar baz)"
  3495.   returns "zab rab oof".
  3496. & MONEY()
  3497.   money(<object>)
  3498.  
  3499.   returns the amount of money <object> has.
  3500. & LCON()
  3501.   lcon(<object>)
  3502.  
  3503.   Returns a list of the dbrefs of all contents in a room that you can
  3504.   see. If you are not in the room, you must control it in order to get
  3505.   its contents.
  3506. & LEXITS()
  3507.   lexits(<object>)
  3508.  
  3509.   Returns a list of the dbrefs of all the non-dark exits in the room.
  3510.   If you are not in the room, you must control it in order to get the
  3511.   list of exits.
  3512. & WORDS()
  3513.   words(<string>)
  3514.  
  3515.   words() returns the number of words in a string.
  3516. & SUB()
  3517.   sub(<num>, <num>)
  3518.  
  3519.   Sub() returns the integer subtraction of two numbers.
  3520. & LOCK()
  3521.   lock(<object>[/<locktype>])
  3522.  
  3523.   lock() returns the text string equivalent of the lock on an object that
  3524.   you control. You can also provide an "enter", "use", "tport", or "page" 
  3525.   switch after the object, if you want to check something other than the
  3526.   regular lock.
  3527. & ELOCK()
  3528.   elock(<object>[/<locktype>], <victim>)
  3529.  
  3530.   elock() returns 1 if the <victim> would pass the lock on <object>,
  3531.   and 0 if it would fail. You do not need to control either object.
  3532.   
  3533.   You can also provide an "enter", "use", "tport", or "page" switch
  3534.   after the object, if you want to check something other than the
  3535.   regular lock.
  3536. & GET()
  3537.   get(<object>/<attribute>)
  3538.  
  3539.   The get function will be replaced by the string stored in the
  3540.   attribute of the object. You may get the attributes of objects you
  3541.   control, the attributes you control on other objects, and publicly
  3542.   accessible attributes.
  3543.   
  3544. & TIME()
  3545.   time()
  3546.  
  3547.   Gives you the current time on the MUSH.
  3548.   WARNING!  This is the time on the machine that the mud is running
  3549.   on, and not where you are.
  3550. & RAND()
  3551.   rand(<num>)
  3552.  
  3553.   Rand returns an interger between 0 and num-1.
  3554. & EXIT()
  3555.   exit(<object>)
  3556.  
  3557.   Exit returns the first exit on the list of exits in the object.
  3558.   Dark exits are not listed.  See Next for the method for seeing the
  3559.   rest of the exits in an object.
  3560.  
  3561. & ACOS()
  3562.   acos(<number>)
  3563.  
  3564.   Returns the arc-cosine of <number>, expressed in radians.
  3565. & ASIN()
  3566.   asin(<number>)
  3567.  
  3568.   Returns the arc-sine of <number>, expressed in radians.
  3569. & ATAN()
  3570.   atan(<number>)
  3571.  
  3572.   Returns the arc-tangent of <number>, expressed in radians.
  3573. & COS()
  3574.   cos(<number>)
  3575.  
  3576.   Returns the cosine of <number>, which should be expressed in radians.
  3577. & SIN()
  3578.   sin(<number>)  
  3579.  
  3580.   Returns the sine of <number>, which should be expressed in radians.
  3581.  
  3582. & TAN()
  3583.   tan(<number>)
  3584.  
  3585.   Returns the tangent of <number>, which should be expressed in radians.
  3586. & E()
  3587.   e()
  3588.  
  3589.   Returns the value of "e"  (2.718281).
  3590. & PI()
  3591.   pi()
  3592.   
  3593.   Returns the value of "pi" (3.141592).
  3594. & FDIV()
  3595.   fdiv(<numerator>,<denominator>)
  3596.  
  3597.   Returns the quotient of the two numbers. Note that the DIV() and MOD()
  3598.   functions cannot be used on floating point numbers.
  3599. & EXP()
  3600.   exp(<number>)
  3601.  
  3602.   Returns e to the power of <number>.
  3603. & LOG()
  3604.   log(<number>)
  3605.  
  3606.   Returns the logarithm (base 10) of <number>.
  3607. & LN()
  3608.   ln(<number>)
  3609.  
  3610.   Returns the natural log of <number>.
  3611. & POWER()
  3612.   power(<number>,<exponent>)
  3613.  
  3614.   Returns <number> to the power of <exponent>.
  3615. & CEIL()
  3616.   ceil(<number>)
  3617.  
  3618.   Returns the least integral value greater than or equal to <number>.
  3619. & FLOOR()
  3620.   floor(<number>)
  3621.  
  3622.   Returns the greatest integral value less than or equal to <number>.
  3623. & ROUND()
  3624.   round(<number>,<places>)
  3625.  
  3626.   Rounds <number> to <places> decimal places. <places> must be between
  3627.   0 and 6.
  3628.  
  3629. & ADD()
  3630.   add(<number>,<number>)
  3631.  
  3632.   Returns the sum of two numbers. It operates on integers and floats.
  3633. & MUL()
  3634.   mul(<number>,<number>)
  3635.  
  3636.   Returns the product of two numbers. It operates on integers and floats.
  3637. & DIV()
  3638.   div(<number>,<number>)
  3639.  
  3640.   Div returns the integer quotient of the first number divided by
  3641.   the second number.  See MOD.
  3642. & MOD()
  3643.   mod(<number>,<number>)
  3644.  
  3645.   Mod returns the remainder of the interger division of the first
  3646.   number by the second.  See DIV.
  3647. & LNUM()
  3648.   lnum(<number>)
  3649.  
  3650.   Lnum returns a list of numbers, from 0 to <number - 1>. For example,
  3651.   lnum(4) returns the list "0 1 2 3". This is useful for creating loops.
  3652.  
  3653. & FIRST()
  3654.   first(<string>)
  3655.  
  3656.   Returns the first word of a string, that is, everything to the left
  3657.   of the first space in the string, or the entire string if there are
  3658.   no spaces in the string.  See REST.
  3659. & REST()
  3660.   rest(<string>)
  3661.  
  3662.   Rest takes a string, returns all the string except the first word, 
  3663.   that is, everything to the right of the first space, or an empty 
  3664.   string, or the empty string if there are no spaces in the string.  
  3665.   See FIRST.
  3666. & STRLEN()
  3667.   strlen(<string>)
  3668.  
  3669.   Returns the length of the string in a numerical string.
  3670. & MID()
  3671.   mid(<string>, <first>, <length>)
  3672.  
  3673.   Mid returns a segment of the string, the <length> characters to the
  3674.   right of the <first> character.  Note that the first character in a
  3675.   string is numbered zero, and not one.
  3676. & COMP()
  3677.   comp(<string1>, <string2>)
  3678.  
  3679.   Comp compares two strings.  It returns 0 if they are the same, 1 if
  3680.   string2 is less than/preceeds alphabetically string2, and -1 
  3681.   otherwise.
  3682. & S-FUNCTION
  3683.   s(string)
  3684.  
  3685.   This function performs pronoun substitution in a string, and then 
  3686.   returns that string.  As usual, %n is the name, %s the subjective
  3687.   pronoun, %o the objective, and %p the possessive.  It is important 
  3688.   to note that the pronoun is that of the triggering object.
  3689.  
  3690.   So, if the ve of an object were: "[s(This is %n)], and I were to 
  3691.   type @trigger <object>/ve, it would return "This is <myname>", but 
  3692.   if vf were @trigger me/ve, then triggering the vf makes the ve 
  3693.   return "This is <object>"
  3694.     
  3695. & POS()
  3696.   pos(<string1>,<string2>)
  3697.  
  3698.   This function returns the position that string1 begins in string2,
  3699.   with the first position being 1.  
  3700.   If string1 is not in string2, then it returns -1.
  3701. & MATCH()
  3702.   match(<string>, <pattern>)
  3703.  
  3704.   This function tests if the pattern matches the string.  The pattern
  3705.   can contain the wildcards * and  ?.  ? matches to any one 
  3706.   character, while * matches to any number of characters, including 
  3707.   none.  So s?x would match to sex or six, but not to socx, but s*x 
  3708.   would match to all of them. If no match is found, 0 is returned.
  3709.   
  3710.   This attempts to match to a word, not to an entire string. To match
  3711.   an entire string  (for example, to match "red blue green" to "*bl*"),
  3712.   use the strmatch() function.
  3713.   
  3714. & STRMATCH()
  3715.   strmatch(<string>, <pattern>)
  3716.   
  3717.   This function is matches <pattern> against the entire <string>.
  3718.   It returns 1 if it matches and 0 if it doesn't. It is not
  3719.   case-sensitive, and <pattern> may contain wildcards.
  3720.  
  3721.   strmatch(Foo bar baz,*Baz) will return 1.
  3722.   strmatch(Foo bar baz,*Foo) will return 0.
  3723.   strmatch(Foo bar baz,*o*a*) will return 1.
  3724.   
  3725. & EXTRACT()
  3726.   extract(<string>,<first>,<length>)
  3727.  
  3728.   Extract returns a string of length words, starting with the first 
  3729.   word. Unlike letters, the first word in a string is number 1, 
  3730.   instead of 0.
  3731.  
  3732.   A word is assumed to be defined as a string beginning and ending 
  3733.   with a space, or a string w/o any interior spaces.
  3734. & FLAGS()
  3735.   flags(<object>)
  3736.  
  3737.   Flags returns a string consisting of the flags attached to the 
  3738.   object. The string is, however, just one word.
  3739. & NUM()
  3740.   num(<object>)
  3741.  
  3742.   Returns the dbref number of the object, which must be in the same 
  3743.   room as the object executing num.
  3744. & CON()
  3745.   con(<object>)
  3746.  
  3747.   Con returns the first object in the list of objects carried by 
  3748.   thing. Just the first, and only the first.  See NEXT.
  3749. & LOC()
  3750.   loc(<object>)
  3751.   
  3752.   Loc returns the dbref of the location that object is at.  The 
  3753.   object has to either be yours or be in the same room as you to 
  3754.   work. The location of an exit is its destination (the source of 
  3755.   an exit is its home). The location of a room is its drop-to
  3756.   (if one is not set, then the location is #-1).
  3757.  
  3758. & WHERE()
  3759.   where(<object>)
  3760.   
  3761.   This function returns the "true" location of an object. This is
  3762.   the standard location (i.e. where the object is) for things and
  3763.   players, the source room for exits, and #-1 for rooms.
  3764.   
  3765.   In other words, the "true" location of an object is where it is
  3766.   linked into the database. For example, an exit appears in the 
  3767.   room of its "home", not its "location" (the LOC() function on an
  3768.   exit will return the latter). A room's "real" location is always
  3769.   Nothing (the LOC() function will return its drop-to).
  3770.   
  3771. & OWNER()
  3772.   owner(<object>)
  3773.  
  3774.   Owner returns the dbref of the owner of the object.  The object
  3775.   has to either be yours or else be in the same room as you.
  3776. & NAME()
  3777.   name(<dbref>)
  3778.  
  3779.   Name returns the name of object (dbref).
  3780. & NEXT()
  3781.   next(<thing>)
  3782.  
  3783.   If thing is an exit in a room, then next will return the next 
  3784.   nondark exit in the list of exits for that room.  If thing is an 
  3785.   object, then next will return the next oject in the inventory list 
  3786.   that the object is in.  Otherwise, it returns a '#-1' string.
  3787. & @ps
  3788.   @ps [/<switch>] [*<player> | all | count ]
  3789.   @ps is a useful command for MUSHers.  It lists all commands 
  3790.   currently on your 'to be executed' queue, thus allowing you to 
  3791.   identify infinite (or unnecessary) loops with-out putting in says 
  3792.   or poses. It gives a count of the total commands in each of the
  3793.   queues (Player, Object, Wait, and Semaphore), displayed in the format
  3794.   <Number of your queued commands> / <Total number of queued commands>.
  3795.   @ps can identify that you actually *do* have an infinite loop.  Much
  3796.   better than waking up in the morning with all your money gone!
  3797.  
  3798.   @ps with no arguments will show you your own queue. Wizards may
  3799.   specify the /all switch or option, and see the full queue. They
  3800.   may also specify a player.
  3801.   @ps/summary or the "count" option just displays the queue totals.
  3802. & Looping
  3803.   Looping in an object can have it's good parts and it's bad parts.
  3804.   The good part is when you activate part of a program multiple times
  3805.   to exhaustively perform an operation.  This is usually done by:
  3806.   va: <list of commands>;@trigger me/vb
  3807.   vb: @switch <test> = <false>,@trigger me/va,<otherwise go on>
  3808.   Looping can be a problem when it goes on without stopping.  The @ps
  3809.   command can be used to see if you are looping.  Beware!  A looping 
  3810.   machine that isn't @halt'd will drain your pennies while you are away
  3811.   from the mush!
  3812.   See @ps.
  3813. & enter
  3814.   enter <object> can be used to enter the inside of an object.
  3815.   Insides of objects are best used for vehicles, or storage spaces 
  3816.   when you don't have a home.  (or even a floating home)  Note that 
  3817.   you can enter only objects you own or that have the Enter_ok flag
  3818.   set.
  3819.   (see @enter, @oenter, @aenter, leave, @lock, and @idesc)
  3820. & @enter
  3821.   @enter <object> = <message>
  3822.   Basically the @succ for the 'enter <object>' exit.  The message is
  3823.   displayed to anyone entering the object.
  3824. & @leave
  3825.   @leave <object> = <message>
  3826.   Basically the @succ for the 'leave <object>' exit.  The message is
  3827.   displayed to anyone leaving the object.
  3828. & @oenter
  3829.   @oenter <object> = <message>
  3830.   Similarly to other omessages, this displays <name> <message> to 
  3831.   everyone inside the object, except for the person who is entering.
  3832. & @oleave
  3833.   @oleave <object> = <message>
  3834.   Similarly to other omessages, this displays <name> <message> to
  3835.   everyone inside the object, except for the person who is leaving.
  3836. & @aenter
  3837.   @aenter <object> = <actionlist>
  3838.   Executes <actionlist> whenever someone enters the object.  Actions 
  3839.   are lists of commands separated by semi-colons and these commands 
  3840.   are executed by the object (see puppet). Objects can execute almost
  3841.   any command.  Gender substitutions are applied to the commands 
  3842.   before they are executed, which allows use of the player's name who
  3843.   caused the action.  See @enter, and @oenter.
  3844. & @aleave
  3845.   @aleave <object> = <actionlist>
  3846.   Executes <actionlist> whenever someone leaves the object. Actions
  3847.   are lists of commands separated by semi-colons and these commands
  3848.   are executed by the object. (see puppet). Objects can execute almost
  3849.   any command.  Gender substitutions are are applied to the commands 
  3850.   before they are executed, which allows use of the player's name who
  3851.   cause the action. See @leave and @oleave.
  3852. & @oxenter
  3853.   @oxenter <object> = <message>
  3854.   This replaces the functionality of the old @oenter.  This message is
  3855.   shown to everyone in the room that the player leaves whenever he enters
  3856.   an object via the command 'enter <object>'. This will be shown in 
  3857.   addition to the leave message of the room, not instead of.
  3858. & @oxleave
  3859.   @oxleave <object> = <message>
  3860.   This message is shown to everyone in the room that a person enters
  3861.   when doing a 'leave' command.  This will be shown in addition to the
  3862.   enter messages of the room, not instead of.
  3863. & BOOLEAN VALUES
  3864.   Boolean values are internally considered to be either 1, generally 
  3865.   interpreted as being true, and 0, which is generally interpreted as
  3866.   being false. Now, any string is interpreted as true(1), except for 
  3867.   the null string (whose length is 0), which is false(0).
  3868.   A #-1 is interpreted as false(0), and any other #<dbref> is 
  3869.   interpreted as true(1).  Any number except 0 is interpreted as 
  3870.   true(1), except 0 which is false(0).  
  3871.   (Yes, even negative numbers are true(1))
  3872.  
  3873.   Examples:
  3874.   not(foo) = 0
  3875.   not(<null string>) = 1
  3876.   not(-66) = 0
  3877.   not(0) = 1
  3878.   not(#-1) = 1
  3879.   not(#12) = 0
  3880.   And so on...
  3881.   (note: These rules only apply when a function expects a Boolean 
  3882.   value, not for strings that expect other values.)
  3883. & AND()
  3884.   [AND(<boolean value>,<boolean value>)]
  3885.  
  3886.   Takes two booleans, and returns 1 is the two boolean values are 
  3887.   each equivalent to true(1).  See BOOLEAN VALUES.
  3888. & OR()
  3889.   [or(<boolean value>,<boolean value>)]
  3890.  
  3891.   Takes two booleans, and returns a 1 if at least one of the inputs 
  3892.   is equivalent to true(1).  See BOOLEAN VALUES.
  3893. & NOT()
  3894.   [not(<boolean value>)]
  3895.  
  3896.   Takes a boolean value, and returns it's inverse.  
  3897.   I.E. if the input is equivalent to true(1), it returns a 0, and if 
  3898.   the input is equivalent to false(0), it returns a 1.
  3899.   See BOOLEAN VALUES.
  3900. & XOR()
  3901.   [xor(<boolean value>,<boolean value>)]
  3902.  
  3903.   Takes two booleans, and returns a 1 if one, and only one of the two
  3904.   inputs is equivalent to true(1).  See BOOLEAN VALUES.
  3905. & gt()
  3906.   [gt(<integer1>,<integer2>)]
  3907.  
  3908.   Takes two integers, and returns 1 if and only if 
  3909.   integer1 > integer2, and 0 otherwise.
  3910. & gte()
  3911.   [gte(<integer1>,<integer2>)]
  3912.  
  3913.   Takes two integers, and returns 1 if and only if
  3914.   integer1 >= integer2, and 0 otherwise.
  3915.  
  3916. & lt()
  3917.   [lt(<integer1>,<integer2>)]
  3918.  
  3919.   Takes two integers, and returns 1 if and only if
  3920.   integer1 < integer2, and 0 otherwise.
  3921. & lte()
  3922.   [lte(<integer1>,<integer2>)]
  3923.  
  3924.   Takes two integers, and returns 1 if and only if
  3925.   integer1 <= integer2, and 0 otherwise.
  3926. & eq()
  3927.   [eq(<integer1>,<integer2>)]
  3928.  
  3929.   Takes two integers, and returns 1 if they
  3930.   are equal, 0 otherwise.
  3931. & neq()
  3932.   [neq(<integer1>,<integer2>)]
  3933.  
  3934.   Basically the same as [not(eq(<integer1>,<integer2>))].
  3935.   (see eq(), not())
  3936. & cat()
  3937.   cat(<string1>,<string2>[,<string3>,<string4>,...])
  3938.  
  3939.   cat() concatenates strings, separating each string by a space.
  3940.   So "[cat(one, two)]" will return 'one two'.
  3941. & member()
  3942.   [member(<list>,<word>)]
  3943.  
  3944.   Member takes a list and a word, and returns the position of <word>
  3945.   if <word> is a word in <list>.  A word is defined as a string which
  3946.   has no interior spaces.  So '  hello  ' would be one word, while
  3947.   'hello there' would be two.  See LISTS
  3948. & LISTS
  3949.   A list is a string, usually stored in an attribute (currently any
  3950.   of the va-vz's), which is a series of words, separated by one or
  3951.   more spaces.  The following would be a list 
  3952.   (denoted on the ends by ', which is not actually in the string):
  3953.   'one two three four five'
  3954.   The functions first(), rest(), cat(), member(), remove(), all work
  3955.   on lists.  Look them up, they can be very helpful.
  3956. & leave
  3957.   The command leave allows you to exit an object you have enter'ed 
  3958.   into. There is not way to stop someone from leaving an object once 
  3959.   they get inside it, and there is not any oenter or enter messages 
  3960.   that get triggered.
  3961.   See enter, enter_ok.
  3962. & remove()
  3963.   [remove(<list>,<word>)]
  3964.  
  3965.   Remove takes a list and a word, and returns the list, with the
  3966.   word deleted from it.  A word is defined as a string which contains
  3967.   no interior spaces.  If the word is not in the list, then the list
  3968.   is returned.
  3969. & RWHO
  3970.   RWHO  This MUSH may be attached to the RWHO server that was created
  3971.   by Marcus Ranum (Jerry_Cornelius).  Every so often, the MUSH sends
  3972.   out information about who is logged in to this server.  The RWHO
  3973.   command is an internal client that talks to this server.  Most MUSHes
  3974.   might not have this command even if they actually send information to
  3975.   an RWHO server.  The reason that PernMUSH has this in-game is because
  3976.   there is also an RWHO server on the same machine.  If it was on a
  3977.   separate machine, network problems could freeze the mud.
  3978. & @remit
  3979.   @remit <object> = <message>.  Sends the message to all contents of
  3980.   <object>, which can be a room, thing, or player. (The TinyMUSH 2.0
  3981.   equivalent is @pemit/contents).
  3982.   See also @emit, @pemit, @oemit, SPOOFING, NOSPOOF and CONTROL.
  3983. & @oemit
  3984.   @oemit [<room>/]<object> = <message>
  3985.  
  3986.   If no room is specified, this command shows <message> to everyone
  3987.   in your current location EXCEPT <object>.
  3988.   
  3989.   If a room is specified (usually via dbref), this command shows
  3990.   <message> to everyone in <room> except for <object>. In this case,
  3991.   <object> is matched with reference to <room>. Therefore, if you
  3992.   want to send a message to everything but an object called "spy"
  3993.   in #100, you can simply use "@oemit #100/spy=Test"; you don't need
  3994.   to know the dbref of "spy".
  3995.  
  3996.   See also: @emit, @pemit, NOSPOOF and SPOOFING.
  3997. & @hide
  3998.   @hide[/<switch>]
  3999.   
  4000.   This command enables a royalty, wizard, or player with the Hide
  4001.   power to disappear from the WHO list for mortals. "@hide/yes"
  4002.   hides the player, "@hide/no" unhides the player. Setting and
  4003.   unsetting the DARK flag automatically hides and unhides a player,
  4004.   but using the @hide command does not affect the DARK flag. Hidden
  4005.   players are marked as "(Dark)" in the privileged WHO listing.
  4006.  
  4007.   Hidden players also disappear from the RWHO, and mortals cannot
  4008.   use the CONN(), IDLE(), or LWHO() functions to find them.
  4009.   
  4010. & @halt
  4011.   @halt <object>  or  @halt <object>=<new_command> or @halt/all
  4012.  
  4013.   This command removes all queued actions in all queues for <object>,
  4014.   and, if <new_command> is specified, places that new command in the
  4015.   queue. If <object> is a player, it clears the queue for the player
  4016.   and all of his objects. You can use "@halt me" to clear your own
  4017.   queue. The /all switch makes this command equivalent to "@allhalt".
  4018.   If no new command is given and the object being halted is not a
  4019.   player, the object is also set HALT.
  4020.   
  4021.   Note that halting an object does NOT affect any objects waiting
  4022.   on it as a semaphore.
  4023.    
  4024. & @allhalt
  4025.   @allhalt.  This commands halts all objects in the game in an effort to
  4026.   free up the queue.  This is a wizard only command. Objects set
  4027.   IMMORTAL are immune to the effects of an @allhalt.
  4028.   This command is equivalent to "@halt/all".
  4029. & @chownall
  4030.   @chownall <player> [= <target_player>].  Tranfers ownership of all items
  4031.   that player owns (except player) to the ownership of target_player.
  4032.   This is a wizard only command.  If target_player is not given, the
  4033.   executing recipient is the subject of the @chownall.
  4034. & @doing
  4035.   @doing [/header] <message>.  If this is compiled in you can set a short 
  4036.   message that will show up in the WHO listing next to your name.
  4037.   The /header switch is equivalent to "@poll", and sets the header at
  4038.   the top of the WHO listing. This switch can only be used by wizards.
  4039. & @motd
  4040.   @motd [/<switch>] [<message>].  
  4041.  
  4042.   The default for this command (and with the /connect) switch, is a
  4043.   wizard only command that will set a short (non-longterm) message that 
  4044.   will be shown to players when they connect.
  4045.  
  4046.   Other switches:
  4047.   /wizard : sets the message for wizards (like @wizmotd)
  4048.   /down   : sets the logins-off message (like @rejectmotd)
  4049.   /full   : sets the max-players-logged-in message
  4050.   /list   : list the MOTDs (like @listmotd, can be used by anyone)
  4051. & @wizmotd
  4052.   @wizmotd <message>.  This is a wizard only command that will set a short
  4053.   (non-longterm) message that will be shown to wizards when they connect. 
  4054. & @rejectmotd
  4055.   @rejectmotd <message>.  This is a wizard only command that will set a
  4056.   short (non-longterm) message that will be shown to players that try to
  4057.   connect when logins are disabled. 
  4058. & @listmotd
  4059.   @listmotd.  This is a wizard only command that will display the current
  4060.   motd, wizmotd and rejectmotd to the player.
  4061. & @poor
  4062.   @poor <value>.
  4063.   This is a wizard only command.  It sets every player's money supply to
  4064.   value
  4065. & @power
  4066.   @power <object>=[!]<power>
  4067.   
  4068.   This is a wizard-only command which allows the granting of special
  4069.   priviledges to objects of any type. 
  4070.   
  4071.   A list of powers is given in "help powers list".
  4072. & POWERS LIST
  4073.   Powers List:
  4074.   
  4075.   boot            Can use @boot command.
  4076.   builder               Can use Builder commands.
  4077.   chat_privs        Can use Admin channels.
  4078.   halt            Can @halt others' objects and do @allhalt.
  4079.   hide            Can hide on the WHO list.
  4080.   idle            No inactivity timeout.
  4081.   immortal        Doesn't need money or quota, and can't be killed.
  4082.   login            Not subject to login restrictions.
  4083.   long_fingers         Can do things remotely, like "get".
  4084.   poll            Can use @poll command.
  4085.   player_create        Can use @pcreate command.
  4086.   queue            Has 10x normal queue limit.
  4087.   quota            Can use @quota commands on other players.
  4088.   search        Can do @search, @stats, and @entrances on anything.
  4089.   see_all        Sees everything as if it were Visual.
  4090.   see_queue             Can do @ps on anyone, and @ps/all.
  4091.   tport_anything        Can @teleport anything.
  4092.   tport_anywhere    Can @teleport to anywhere.
  4093. & @entrances
  4094.   @entrances[/<switch>] <object> [=<begin>,<end>]
  4095.   
  4096.   This command will show you all exits linked to the object you use the
  4097.   command on, as well as where the exit originates.  This command is
  4098.   computationally expensive and costs the same as @find. You can limit
  4099.   the range of the dbrefs searched by specifying <begin> and <end>.
  4100.   
  4101.   It takes four switches:
  4102.   
  4103.   /exits       show only exits linked to <object>
  4104.   /things      show only things which have their homes in <object>
  4105.   /players     show only players who have their homes in <object>
  4106.   /rooms       show only rooms which have a drop-to of <object>
  4107.   
  4108. & @atrlock
  4109.   @atrlock <object>/<attribute> = [on|off].
  4110.   If 'on' is specified, it 'locks' the specified attribute on the object
  4111.   if it is unlocked already.  If the attribute is unlocked, and owned by
  4112.   someone other than you, you will gain ownership of it.  If an attribute
  4113.   is unlocked, then anyone who controls the object or the person who
  4114.   controls the attribute may change it.  Wizards may lock/unlock anyones
  4115.   attributes (but will not transfer ownership).  If you specify 'off' it
  4116.   will unlock a locked attribute. Specifying neither will return the
  4117.   current value of the lock.
  4118. & @atrchown
  4119.   @atrchown <object>/<attribute> = <new_owner>.
  4120.   Like @chown except it changes the control of an attribute from one person
  4121.   to another.. You may only @atrchown attributes that you currently own.
  4122. & @allquota
  4123.   @allquota <limit>
  4124.   This is a wizard level command that is only available if the quota
  4125.   system is being used.  It displays the current max and owned objects
  4126.   of every player and resets their quota left to the new limit minus the
  4127.   current number owned.
  4128. & @disable
  4129.   See '@enable'.
  4130. & @enable
  4131.   @enable <parameter>
  4132.   @disable <parameter>
  4133.   
  4134.   These are wizard commands that allow certain parameters of the game to
  4135.   be changed at runtime. The values of these parameters are listed by the
  4136.   "@config/globals" command. Parameters and their effects are as follows:
  4137.   
  4138.   logins       --  When logins are disabled, only wizards and royalty may
  4139.                    log into the game. Mortals attempting to log in will be
  4140.                    given the down text, as well as the @rejectmotd.
  4141.   daytime      --  When daytime is enabled, computationally expensive commands
  4142.                    cannot be run. @find, @search, @entrances, LSEARCH(), and 
  4143.                    @dump cannot be used, although the automatic database save
  4144.                    routines will continue to run.
  4145.   command_log  --  When this is enabled, all commands are logged.
  4146.   huh_log      --  When this is enabled, all commands that produce a "Huh?"
  4147.                    are logged.
  4148.   force_log    --  When this is enabled, @forces done by wizards are logged.
  4149.   wall_log     --  When this is enabled, @wizwalls are logged.
  4150.   
  4151. & @dbck
  4152.   @dbck
  4153.   This is a wizard only command.  It forces the database to do run
  4154.   the internal cleanup and consistency check that normally runs about
  4155.   every 10 minutes or so. (This command implies @purge)
  4156. & @dump
  4157.   @dump [/paranoid] [check interval]
  4158.  
  4159.   This is a wizard only command that saves a copy of the current memory
  4160.   database out to a save file.  This preempts the normal regular dumping
  4161.   that the mud performs on its own.
  4162.  
  4163.   If the /paranoid switch is used, the game performs additional consistency
  4164.   checking which corrects possible data corruption. If a check interval
  4165.   is specified, the game writes confirmation of the dump to the checkpoint
  4166.   log file every <interval> objects. If no interval is specified, it is
  4167.   taken to be the size of the databased, divided by 5.
  4168.   This switch should ONLY be used if a normal @dump is not being done
  4169.   correctly. Paranoid dumps should generally only be done by wizards with 
  4170.   access to the account on which the MUSH is running, since others will
  4171.   not have access to the checkpoint logfile.
  4172.  
  4173. & @pcreate
  4174.   @pcreate <name> = <password>
  4175.   This is a wizard level command that is only available if registration is
  4176.   being enforced.  It creates a player with the given name and password.
  4177. & @purge
  4178.   @purge
  4179.   This is a wizard only command that will check the destroyed object list
  4180.   for corruption, and make sure that all objects there are really there.
  4181. & @quota
  4182.   @quota [/<switch>] <victim>
  4183.   This is a wizard level command that is only available if the quota
  4184.   system is enabled.  It reports the victim's owned objects and the
  4185.   maximum number of objects he may own.
  4186.   The /set and /all switches are equivalent to @squota and @allquota,
  4187.   respectively.
  4188. & @squota
  4189.   @squota <victim> = <limit>
  4190.   This is a wizard level command that is only available if the quota
  4191.   system is enabled.  It reports the victim's owned objects, and sets
  4192.   the maximum number of objects he may own to <limit>. If no limit is
  4193.   specified, this works identically to @quota.
  4194. & @toad
  4195.   @toad <player>
  4196.   This is a wizard only command.  It changes a player into an object, and 
  4197.   @chowns all of the previous players possessions over to the @toading
  4198.   wizard.
  4199. & @uptime
  4200.   @uptime
  4201.   
  4202.   This command, for mortals, gives the time until the next database dump.
  4203.   For wizards, it also gives the system uptime (just as if 'uptime' had
  4204.   been typed at the shell prompt) and process statistics: the process ID,
  4205.   the machine page size, the maximum resident set size utilized (in K),
  4206.   "integral" memory (in K x seconds-of-execution), the number of page 
  4207.   faults ("hard" ones require I/O activity, "soft" ones do not), the
  4208.   number of times the process was "swapped" out of main memory, the
  4209.   number of times the process had to perform disk I/O, the number of
  4210.   network packets sent and received, the number of context switches,
  4211.   and the number of signals delivered to the process.
  4212.   In addition, this command gives wizards the dbref number of the first
  4213.   object in the destroyed object free list.
  4214.  
  4215. & @version
  4216.   @version
  4217.   Tells the player the name of the MUSH, which version of the code is 
  4218.   currently running on the system, when it was compiled, and when
  4219.   the last restart was.
  4220. & @verb
  4221.   @verb <victim>=<actor>,<what>,<whatd>,<owhat>,<owhatd>,<awhat>,<args>
  4222.   
  4223.   This command provides a way to do user-defined verbs with associated
  4224.   @attr/@oattr/@aattr groups. Invoking it does the following:
  4225.   
  4226.   <actor> sees the contents of <victim>'s <what> attribute, or
  4227.     <whatd> if <victim> doesn't have a <what>.
  4228.   Everyone in the same room as <actor> sees the contents of
  4229.     <victim>'s <owhat> attribute, with <actor>'s name prepended,
  4230.     or <owhatd>, also with <actor>'s name prepended, if <victim>
  4231.     doesn't have an <owhat>.
  4232.   <victim> executes the contents of his <awhat> attribute.
  4233.   
  4234.   By supplying up to nine <args>, you may pass those values on
  4235.   the stack (i.e. %0, %1, %2, etc. up through %9).
  4236.   
  4237.   See "help @verb2" for more.
  4238.   
  4239. & @verb2  
  4240.   In order to use this command, at least one of the following criterion
  4241.   must apply:
  4242.     1. The object which did the @verb is a wizard.
  4243.     2. The object which did the @verb controls both <actor> and <victim>
  4244.     3. The thing which triggered the @verb (such as through a $command on
  4245.        the object which did the @verb) must be <actor>, AND the object
  4246.        which did the @verb must be either priviledged or control <victim>
  4247.        or <victim> must be VISUAL.
  4248.   
  4249.   See "help @verb3" for examples.
  4250.   
  4251. & @verb3
  4252.   Examples:
  4253.   
  4254.   > @va test = $frob test:@verb me = %N,FROB,You frobbed test!,OFROB,
  4255.                frobbed test!,AFROB
  4256.   test - Set.
  4257.   > frob test
  4258.   You frobbed test!
  4259.   [ everyone in the same room sees ] Wizard frobbed test!
  4260.   > &FROB test=Nifty. You frobbed test.
  4261.   test - Set.
  4262.   > &OFROB test=frobbed test, cool.
  4263.   test - Set.
  4264.   > &AFROB test=:is frobbed!
  4265.   > frob test
  4266.   Nifty, You frobbed test.
  4267.   [ everyone in the same room sees ] Wizard frobbed test, cool.
  4268.   test is frobbed! 
  4269.   
  4270.   Another example follows in "help @verb4"
  4271.   
  4272. & @verb4
  4273.   If we want to make the "frob" command global and usable for anything,
  4274.   we'll need to put the verb definition on a wizard object in the Master
  4275.   Room. The following (simplified) command would be the easiest way
  4276.   to accomplish this.
  4277.    
  4278.   &DO_FROB Global = $frob *:@switch [locate(v(#),v(0),n)]=#-1,
  4279.                     {@pemit %#=I don't see that here.},
  4280.                     {@verb [locate(v(#),v(0),n)]=v(#),FROB,
  4281.                      You frob [capstr(v(0))]!,OFROB,
  4282.                      frobs [capstr(v(0))]!,AFROB
  4283.     
  4284.   Anyone typing "frob <random object>" would trigger off the approrpiate
  4285.   attributes, if they are set on <random object>, or the default messages,
  4286.   if not.
  4287.     
  4288. & @wait
  4289.   @wait <time> = <command_list>
  4290.   @wait <object> = <command_list>
  4291.   @wait <object>/<time> = <command_list>
  4292.   
  4293.   The basic form of this command puts the command list (a semicolon-separated 
  4294.   list of commands) into the wait queue to execute in <time> seconds.
  4295.   
  4296.   The second form sets up a semaphore wait on <object>. The enactor will
  4297.   execute <command_list> when <object> is @notified.
  4298.   
  4299.   The third form combines the first two: the enactor will execute
  4300.   <command_list> when <object> is @notified or when <time> passes,
  4301.   whichever happens first.
  4302.  
  4303.   See also the help for: SEMAPHORES, @drain, @notify
  4304. & @drain
  4305.   @drain <object>
  4306.   
  4307.   This command discards all commands waiting on the semaphore <object>
  4308.   and resets the semaphore to its initial state (clearing the SEMAPHORE
  4309.   attribute). The pending commands are removed from the queue without
  4310.   being executed.
  4311.   
  4312.   See also the help for: SEMAPHORES, @notify, @wait
  4313. & @notify
  4314.   @notify[/all] <object>[=<count>]
  4315.   
  4316.   This command notifies the semaphore <object>, running the first
  4317.   command that waited on <object> using the semaphore version of
  4318.   @wait. If <count> is specified, it notifies the semaphore that
  4319.   many times. If there are no commands, or less than <count>
  4320.   commands, pending for <object>, then subsequent @waits will not
  4321.   block until the semaphore count reaches zero again.
  4322.   
  4323.   The "/all" switch to this command notifies the semaphore until
  4324.   the semaphore count is exactly zero; all commands pending on that
  4325.   semaphore are executed immediately. <count> is ignored.
  4326.   
  4327. & @adisconnect
  4328.   @adisconnect <object> = <command-list>
  4329.   Sets the actions to be taken by a player right after disconnecting from
  4330.   the game.
  4331.   This attribute is only meaningful for players, and will never be
  4332.   automatically triggered on other object types.
  4333.   Example: @adisconnect me = home
  4334.   It is also possible to check the zone object/objects in the zone parent
  4335.   room, as well as objects in the master room, for an @adisconnect. If one is
  4336.   found, it will be executed when a player disconnects in that zone (or,
  4337.   in the case of the master room, anywhere).
  4338.   See also: @aconnect.
  4339. & @aconnect
  4340.   @aconnect <object> = <command-list>
  4341.   Sets the actions to be taken by a player right after connecting to the
  4342.   game.  This attribute is only meaningful for players, and will never be
  4343.   automatically triggered on other object types.
  4344.   Example: @aconnect me = :stretches luxuriously, as if waking from a nap.
  4345.   It is also possible to check the zone object/objects in the zone parent
  4346.   room, as well as objects in the master room, for an @aconnect. If one is
  4347.   found, it will be executed when a player connects in that zone (or, in
  4348.   the case of the master room, anywhere).
  4349.   See also: @adisconnect.
  4350. & @lemit
  4351.   @lemit <message>
  4352.  
  4353.   Emits a message to the outermost container object. For example, if you
  4354.   are carrying a bird, and are inside a vehicle which is in room #10, and
  4355.   you force the bird to @lemit "Cheep", everyone in room #10 will hear
  4356.   "Cheep". This command is the same as "@emit/room".
  4357. & @zemit
  4358.   @zemit <zone> = <message>
  4359.  
  4360.   Emits a message to all rooms in <zone>. You must have control in that
  4361.   zone in order to use this command. Because it is computationally
  4362.   expensive, it costs 100 pennies.
  4363. & think
  4364.   think <message>
  4365.  
  4366.   You can use this command to send a private message to yourself. Pronoun
  4367.   substitution is performed. This is essentially equivalent to doing a
  4368.   "@pemit me=<message>", but with "think", there's no prepended text.
  4369.   One possible use: @adesc me=think %N just looked at you.
  4370.  
  4371. & @wallpose
  4372.   @wallpose <pose>
  4373.  
  4374.   Sends a pose to all connected players. This command may be abbreviated to
  4375.   "@wall :<pose>". It is only executable by wizards.
  4376. & @wallemit
  4377.   @wallemit <message>
  4378.  
  4379.   Sends an emit to all connected players. It is only executable by wizards.
  4380. & @decompile
  4381.   @decompile <object>
  4382.  
  4383.   This dumps the sequence of commands needed to recreate that object. It
  4384.   is useful for keeping off-MUSH records of your valuable objects, and for
  4385.   transferring code from one MUSH to another. Normal locks and enter locks
  4386.   are decompiled, but attributes are not shown as locks.
  4387. & @move
  4388.   @move <object> = <movement message>
  4389.  
  4390.   This attribute stores the message shown to the object when the object moves.
  4391. & @omove
  4392.   @omove <object> = <message>
  4393.  
  4394.   This is a member of the family of o-messages. This is shown to the contents
  4395.   of the location that the object moves to.
  4396. & @amove
  4397.   @amove <object> = <action>
  4398.  
  4399.   This is the action to be taken whenever an object moves.
  4400.  
  4401. & @prefix
  4402.   @prefix <object> = <message>
  4403.  
  4404.   This attribute is meant to be used in conjunction with the AUDIBLE
  4405.   flag. The @prefix of the object is prepended to messages propagated
  4406.   via AUDIBLE.   Pronoun substitution is done on @prefix messages.
  4407.   
  4408.   For example, if you have an audible exit "Outside" leading from a room 
  4409.   Garden to a room Street, with @prefix  "From the garden nearby,"  if
  4410.   Joe does a ":waves to everyone." from the Garden, the people at Street
  4411.   will see the message,   "From the garden nearby, Joe waves to everyone."
  4412.   
  4413. & @filter
  4414.   @filter <object> = <pattern 1>, <pattern 2>, <pattern 3>, ...
  4415.  
  4416.   This attribute is meant to be used in conjunction with the AUDIBLE
  4417.   flag. The @filter of an object is a comma-separated list of wildcard
  4418.   patterns (like @switch patterns). Any messages which match one of the 
  4419.   patterns is suppressed and not propagated through the AUDIBLE object
  4420.   with the @filter set. (Note: @filter on rooms has no effect!)
  4421.  
  4422.   See 'help @filter2' for examples.
  4423.  
  4424. & @filter2
  4425.  
  4426.   Example:  in a room with the audible exit "Outside" which leads to
  4427.   a room where a puppet "Wiztoy" is listening, with exit @prefix
  4428.   "From inside," and @filter "Testing *,Puppet *":  
  4429.  
  4430.   > :tests.
  4431.   One tests.
  4432.   Wiztoy> From inside, One tests.
  4433.   > @emit Testing @filter.
  4434.   Testing @filter.
  4435.   > @emit Test.
  4436.   Test.
  4437.   Wiztoy> From inside, Test.
  4438.   > @emit Puppet waves.
  4439.   Puppet waves.
  4440.  
  4441. & @inprefix
  4442.   @inprefix <object> = <message>
  4443.   
  4444.   @inprefix is intended for use with objects with a @listen of "*".
  4445.   It prepends the <message> string to any message propagated to the
  4446.   contents of <object> from the outside. If there is no @inprefix,
  4447.   no string is prepended to the output.
  4448.   
  4449.   Example:
  4450.   
  4451.     [ First, @create Vehicle and Test (objects #103 and #104) and drop them ]
  4452.   
  4453.     > @inprefix Vehicle = From outside,
  4454.     Vehicle - Set.
  4455.     > enter Vehicle
  4456.     Vehicle(#103)
  4457.     > @force #104=:bounces.
  4458.     From outside, Test bounces.
  4459.   
  4460. & @infilter
  4461.   @infilter <object> = <pattern 1>, <pattern 2>, <pattern 3>, ...
  4462.   
  4463.   @infilter is meant to be used in conjunction with objects that have
  4464.   a @listen of "*". It can be used to prevent certain messages from
  4465.   propagating to the object's contents from the outside; message patterns
  4466.   that match one of the @infilter patterns are suppressed.
  4467.   
  4468.   For an explanation of these patterns, see the help for "@filter".
  4469.  
  4470. & @chat
  4471.   @chat <channel> = <message>
  4472.   
  4473.   This tells everyone on <channel> your <message>. You can prepend
  4474.   <message> with ':' or ';' to pose instead of talk. This command can 
  4475.   also be formatted:  +<channel> <message>
  4476.   You do not need to type the complete name of the channel, only as
  4477.   many letters as needed to make it distinct from another channel.
  4478.  
  4479.   Note: if you use the '+' form of this command, and you do not
  4480.   use the name of a known channel, your command will be processed
  4481.   as normal, preventing user-defined commands like "+last" from
  4482.   being clobbered by the chat system.
  4483.  
  4484. & @channel
  4485.   @channel <channel> = <on | off | who>
  4486.   
  4487.   The basic form of this command allows you to join, leave, or see who
  4488.   is on a certain channel. (Read "help @channel2" for help on extensions
  4489.   and additional switches to this command). You do not need to type the 
  4490.   complete name of the channel, only as many letters as needed to make it 
  4491.   distinct from another channel.
  4492.   
  4493.   You may use command switches with @channel:
  4494.   "@channel/on public" is equivalent to "@channel public=on"
  4495.   Some channels may be restricted to administrators or wizards only.
  4496.   If you do not have the priviledges needed for that channel, you will
  4497.   not be able to see who is on it.
  4498.  
  4499.   More details are provided in "help @channel2".
  4500.  
  4501. & @channel2
  4502.   @channel/list
  4503.   @channel/add <channel> = <priv level>
  4504.   @channel/delete <channel>
  4505.   @channel/name <channel> = <new name>
  4506.   @channel/priv <channel> = <new priv level>
  4507.   @channel/wipe <channel>
  4508.  
  4509.   These four switches to @channel provide extensions to the basic chat
  4510.   system. Only the "list" switch may be used by non-Wizards; it lists
  4511.   all existing chat channels.
  4512.  
  4513.   The "add" switch allows a wizard to add a new channel. The possible
  4514.   priv levels are "public", "admin", "wizard", and "forbidden". They
  4515.   allow access to everyone, royalty, wizards, and nobody, respectively.
  4516.   A channel name must be unique; you should not have two channels called
  4517.   "Chat1" and "Chat2", for example.
  4518.  
  4519.   The "delete" switch removes an existing channel. The "name" and "priv"
  4520.   switches changed the channel name and priviledge level, respectively.
  4521.   The "wipe" switch clears a channel of players without deleting it.
  4522.   
  4523. & CHAT
  4524.   CHAT SYSTEM
  4525.  
  4526.   The MUSH has a built-in chat system with many different channels.
  4527.   These channels vary from MUSH to MUSH; ask at your local site about
  4528.   which ones are available. The "Public" channel is normally available.
  4529.  
  4530.   You can talk to many people on the MUSH via the chat system, without
  4531.   needing to be in the same room as them. Use the "@channel" command
  4532.   to join, leave, or check who is on a channel, and use the "@chat"
  4533.   or "+" command to communicate.
  4534.  
  4535.   If you examine yourself, you will see a list of channels that you are 
  4536.   currently listening to. Some channels are restricted to wizards or
  4537.   administrators only. See the help for "@chat" and "@channel" for more.
  4538.  
  4539. & @@
  4540.  
  4541.   The "@@" command is a special kind of command; it signals the start
  4542.   of a comment. The comment lasts until a semi-colon is found, just
  4543.   like other MUSH programming statements terminate with a semi-colon.
  4544.   It cannot be put into the middle of a statement, like
  4545.   @va me = $testing:@emit Test. @@ Just a test @@; @vb me=Testing.
  4546.   That will result in the object emitting "Test. @@ Just a test. @@"
  4547.   The correct usage is to make the comment a statement by itself:
  4548.   @va me = $testing:@emit Test.; @@ Just a test @@; @vb me=Testing.
  4549.  
  4550.   It is not necessary to use a closing '@@', but doing so makes the
  4551.   comment stand out much more clearly. A space between the first
  4552.   '@@' and the word following it is not necessary.
  4553.  
  4554. & @wipe
  4555.   @wipe <object>
  4556.   
  4557.   This command clears all attributes from <object>, with the exception of
  4558.   attributes changeable only by wizards, and attributes not controlled by
  4559.   the object's owner (i.e. locked attributes owned by someone else).
  4560.   Only God may use @wipe to clear wiz-changeable-only attributes.
  4561.   The SAFE flag protects objects from @wipe.
  4562.  
  4563. & @parent
  4564.   @parent <object> = <parent>
  4565.  
  4566.   This command sets the parent of <object> to <parent>. <parent> may be
  4567.   an object of any type; <object> can be anything but a player. The
  4568.   player must control <object>. <parent> must either be owned by the
  4569.   player, or LINK_OK, or the player must be a wizard.
  4570.   If <parent> is "none" or blank, the object is unparented.
  4571.  
  4572. & rpage
  4573.   rpage[/<switch>] <player>@<MUSHname> = <message>
  4574.  
  4575.   This command allows you to remote-page a player connected to another 
  4576.   MUSH. <Message> may be either text or a pose, and is formatted accordingly.
  4577.   The MUSH you are trying to page to must be registered with the MUSH
  4578.   you are on  (they must know each other's names and rpage passwords;
  4579.   talk to the Gods if they aren't).
  4580.  
  4581.   A remote-page message is prepended with the name of the originating
  4582.   MUSH, in curly braces. When you attempt to remote-page someone, you
  4583.   are not guaranteed to be able to contact the other MUSH; unless you
  4584.   get your message echoed back, you cannot be sure that the remote
  4585.   player received your message. He might have, but then again, he might
  4586.   not have.  The remote-page facility uses UDP datagrams, and thus does
  4587.   not guarantee transmission.
  4588.  
  4589.   Read 'help rpage2' for more.
  4590.  
  4591. & rpage2
  4592.   Example:  Amberyl, on TinyKrynn, wishes to page Polgara, on Belgariad.
  4593.  
  4594.     Amberyl types:  rpage Polgara@Belgariad = Hi there.
  4595.     Polgara sees:  {TinyKrynn} Amberyl pages, 'Hi there.'
  4596.     Amberyl sees:  {Belgariad} To Polgara: Amberyl pages, 'Hi there.'
  4597.  
  4598.     Polgara replies:  rpage Amberyl@TinyKrynn =:waves hello.
  4599.     Amberyl sees:  {Belgariad} Polgara waves hello.
  4600.     Polgara sees:  {TinyKrynn} To Amberyl: Polgara waves hello.
  4601.   
  4602.   Read 'help rpage3' for more.
  4603.   
  4604. & rpage3
  4605.  
  4606.   If the other person is not connected, is set HAVEN, or doesn't exist,
  4607.   the person attempting to page will receive an error message.
  4608.  
  4609.   If the person attempting to page receives no message of acknowledgement
  4610.   other than "Done.", it is likely that the message hasn't gotten through.
  4611.   Often, though, a few seconds will pass between the "Done."  message and
  4612.   the acknolwedgement.
  4613.  
  4614.   Please note that the names of the MUSHes are case-sensitive. You need
  4615.   to make sure that the name of the MUSH you are typing appears in the
  4616.   remote-page connection list, accessed by typing "rpage/list".
  4617.   
  4618.   Read 'help rpage4' for more.
  4619.   
  4620. & rpage4
  4621.  
  4622.   The rpage command takes two additional switches, "add" and "delete",
  4623.   which are restricted to God only. 
  4624.  
  4625.   To add a new server: rpage/add <Name of server> <Password> = <Address>
  4626.   For every server you are "connected" to, you must have one entry which
  4627.   has the full name of the MUSH, as used in @version on that MUSH. This
  4628.   is the "identifying" entry. Both your MUSH and the other MUSH need to
  4629.   share a password.
  4630.   FooMUSH:  rpage/add BazMUSH foobar=bazvax.cowtech.edu
  4631.   BazMUSH:  rpage/add FooMUSH foobar=foovax.cowtech.edu
  4632.  
  4633.   You can have multiple entries for the same MUSH, i.e. you could also do:
  4634.   rpage/add Foo foobar=foovax.cowtech.edu
  4635.  
  4636.   Deleting a server entry is simple: rpage/delete <Name of server entry>
  4637.   
  4638.   Server entries are automatically saved when the database is.
  4639.  
  4640. & COPYRIGHT
  4641.   Any use of this help text must contain this copyright notice.
  4642.   This help text was written by Jin, Moonchilde, Leona, and Amberyl,
  4643.   for TinyMUSH 1.0, PernMUSH 1.02 - 1.15, and PennMUSH 1.16 on,
  4644.   respectively.
  4645.  
  4646. & CREDITS
  4647.   
  4648.   The original TinyMUSH 1.0 code was written by Lawrence Foard, and
  4649.   was based upon James Aspnes' TinyMUD server. Since then, the code
  4650.   has been modified by the programmers of MicroMUSE (then MicroMUSH),
  4651.   and Joseph Traub (Moonchilde of PernMUSH).
  4652.   
  4653.   Since January of 1992, Lydia Leong (Amberyl of PernMUSH / Polgara
  4654.   of Belgariad) has been maintaining the code currently know as
  4655.   PennMUSH 1.50.
  4656.   
  4657.   Additional credits go to:
  4658.     Ambar (PernMUSH):  debugging and lots of other stuff (PernMUSH v1.14)
  4659.     Annalyn (PernMUSH): lots of code ideas, algorithms, general help
  4660.     Javelin and Talek: (Belgariad): lots of ideas for various things
  4661.     Delta (Twilight), Jim Miller: some portability tweaks and error fixing
  4662.     Durnik, Shaav, Varana, Henrik, and other Belgariad players: playtesting
  4663.   ... plus the TinyMUSH 2.0 mushhacks and the myriad people using this server.
  4664.